MENU

get_edit_post_link()

get_edit_post_link() は、指定された投稿や固定ページの編集画面へのURLを返すテンプレートタグです。このタグは、編集権限のあるユーザーが投稿を編集するためのリンクをカスタマイズする際に便利です。

目次

機能の説明

get_edit_post_link() は、指定した投稿IDに基づいて、その投稿の編集画面へのURLを取得します。edit_post_link() と異なり、URL自体を返すだけなので、HTMLの出力を自分で制御したい場合に使われます。

  • 管理者や編集権限のあるユーザー向けのURLを生成します。
  • このタグを使えば、リンクの見た目を自由にカスタマイズできます。

シンプルなコード例

$url = get_edit_post_link(); 
echo $url;

解説

https://example.com/wp-admin/post.php?post=123&action=edit

使い方の解

このテンプレートタグは、テーマのテンプレートファイル(例:single.phppage.php)で使用され、投稿の編集URLを取得します。URLを使用して、カスタムHTMLやJavaScriptで編集リンクを自由に作成することができます。

引数

  1. $id(任意): 投稿IDを指定します。省略すると、現在表示中の投稿のIDが使用されます。
  2. $context(任意): display もしくは raw を指定できます。display はエスケープ済みのURL、raw は生のURLを返します。
  3. $blog_id(任意): マルチサイト環境でのサイトIDを指定します。

基本的な編集リンクを作成する例

$edit_link = get_edit_post_link();
if ($edit_link) {
    echo '<a href="' . esc_url($edit_link) . '">編集する</a>';
}

この例では、get_edit_post_link() で取得したURLを使って、<a> タグを生成し、「編集する」というリンクを出力しています。esc_url() でURLをエスケープすることで、セキュリティ対策を施しています。

一緒に使うことが多い関連タグ

edit_post_link()

edit_post_link() は、編集リンクのHTMLタグ全体を出力するテンプレートタグです。get_edit_post_link() と異なり、自分でHTMLを記述する必要がないため、手軽に編集リンクを表示したい場合に便利です。

edit_post_link('この投稿を編集', '<p>', '</p>');

解説

このコードでは、<p> タグで囲まれた編集リンクが出力されます。

get_the_ID()

get_the_ID() は、現在表示されている投稿や固定ページのIDを取得するテンプレートタグです。これを使えば、特定の投稿の編集リンクを取得するために、get_edit_post_link() の第一引数に渡すことができます。

$edit_link = get_edit_post_link(get_the_ID());
echo '<a href="' . esc_url($edit_link) . '">投稿を編集</a>';

この例では、get_the_ID() で取得した投稿IDを使って、その投稿の編集リンクを表示しています。

追加情報を取得したい場合

投稿の詳細情報を取得する get_post()

get_post() を使用して、編集リンクと共に投稿のタイトルや投稿者名を表示できます。

$post = get_post(get_the_ID());
echo '投稿タイトル: ' . $post->post_title . '<br>';
echo '投稿者: ' . get_the_author_meta('display_name', $post->post_author) . '<br>';
echo '<a href="' . esc_url(get_edit_post_link($post->ID)) . '">この投稿を編集する</a>';

この例では、get_post() を使って投稿のタイトルと投稿者名を取得し、それに対応する編集リンクを表示しています。

出力できる情報

  • post_title: 投稿のタイトル
  • post_content: 投稿の本文
  • post_author: 投稿者のID
  • post_date: 投稿日時
  • post_status: 投稿の公開状態(例:publishdraft

想定されるトラブル

編集リンクが取得できない

投稿が存在しない、または現在のユーザーに編集権限がない場合、リンクが取得されません。

解決策

current_user_can() を使用して、ユーザーの権限を確認してください。

if (current_user_can('edit_post', get_the_ID())) {
    echo '<a href="' . esc_url(get_edit_post_link()) . '">編集</a>';
}

URLが正しくエスケープされない

URLが生の状態で出力されているため、不正な文字が含まれる可能性があります。

解決策

esc_url() でURLをエスケープするようにしましょう。

$edit_link = get_edit_post_link();
echo '<a href="' . esc_url($edit_link) . '">編集する</a>';

Q&A

get_edit_post_link() で取得できるリンクが空になるのはなぜですか?

投稿が存在しないか、ユーザーに編集権限がない場合、リンクは取得されません

マルチサイトで他のサイトの投稿編集リンクを取得できますか?

第三引数にサイトIDを指定することで、他のサイトの投稿編集リンクも取得可能です。

get_edit_post_link(get_the_ID(), '', '', 2); // サイトID: 2

編集リンクにアイコンを追加したい場合はどうすればよいですか?

アイコン付きのリンクを出力するために、HTMLをカスタマイズします。

$edit_link = get_edit_post_link();
echo '<a href="' . esc_url($edit_link) . '"><i class="fas fa-edit"></i> 編集する</a>';

まとめ

get_edit_post_link() は、投稿やページの編集リンクのURLを取得するためのテンプレートタグです。編集リンクを自分でカスタマイズしたい場合に便利で、edit_post_link() との使い分けが重要です。
このタグを使う際は、esc_url() でURLのエスケープを忘れずに行い、current_user_can() で権限を確認することで、想定外のトラブルを防げます。また、get_the_ID() などの関連タグと一緒に使うことで、より柔軟なカスタマイズが可能になります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次