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.php、page.php)で使用され、投稿の編集URLを取得します。URLを使用して、カスタムHTMLやJavaScriptで編集リンクを自由に作成することができます。
引数
$id(任意): 投稿IDを指定します。省略すると、現在表示中の投稿のIDが使用されます。$context(任意):displayもしくはrawを指定できます。displayはエスケープ済みのURL、rawは生のURLを返します。$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: 投稿の公開状態(例:
publish、draft)
想定されるトラブル
編集リンクが取得できない
投稿が存在しない、または現在のユーザーに編集権限がない場合、リンクが取得されません。
解決策
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() は、投稿やページの編集リンクのURLを取得するためのテンプレートタグです。編集リンクを自分でカスタマイズしたい場合に便利で、edit_post_link() との使い分けが重要です。
このタグを使う際は、esc_url() でURLのエスケープを忘れずに行い、current_user_can() で権限を確認することで、想定外のトラブルを防げます。また、get_the_ID() などの関連タグと一緒に使うことで、より柔軟なカスタマイズが可能になります。
コメント