edit_post_link()

edit_post_link()
目次

edit_post_link()とは?

edit_post_link()
ログイン中の権限を持つユーザーにだけ「この投稿を編集するリンク」を出力するテンプレートタグ
です。

たとえば投稿や固定ページのタイトルや本文の下に「編集」リンクを設置し、管理者や編集者がワンクリックで編集画面に飛べるようにするために利用します。

どんなHTMLが出る?

実行すると、以下のようなリンクがHTMLで出力されます。

<a href="https://example.com/wp-admin/post.php?post=123&action=edit">Edit</a>

このリンクをクリックすると、WordPress管理画面の投稿編集画面が開きます。

edit_post_link()の基本的な書式

edit_post_link(
    string $link = null,
    string $before = '',
    string $after = '',
    int|WP_Post|null $id = null
)

edit_post_link()の引数

引数説明
$linkstringリンクテキスト(省略時はEdit This
$beforestringリンクの直前に出力するHTML
$afterstringリンクの直後に出力するHTML
$idint / WP_Post / null投稿IDやWP_Postオブジェクト(省略時は現在の投稿)

戻り値はなく、echoで直接HTMLを出力します。

表示される条件

誰でも見えるわけではありません。

  • ログイン中のユーザーで
  • edit_post権限を持つ(通常は管理者・編集者)

この条件を満たさない場合、何も出力されません。

edit_post_link()の具体例

1. シンプルに「Edit This」

edit_post_link();

2. テキストを日本語に

edit_post_link('この投稿を編集');

3. リンクに装飾を付ける

edit_post_link('編集する', '<span class="edit-link">[', ']</span>');

出力例:

<span class="edit-link">[<a href="...">編集する</a>]</span>

4. 投稿IDを指定する

edit_post_link('編集', '', '', 42);

これで投稿ID=42の編集リンクを出せます。

コメントやカスタム投稿でも使える?

  • カスタム投稿タイプも問題なく動作します。
  • コメントは別の関数(edit_comment_link())を使います。

実装例:投稿本文の下に設置

single.phpcontent-single.phpの中で使う例です。

<div class="entry-content">
  <?php the_content(); ?>
</div>

<footer class="entry-footer">
  <?php edit_post_link('この投稿を編集', '<span class="edit-link">', '</span>'); ?>
</footer>

edit_post_link()のカスタマイズ例

リンクをボタン風にする

edit_post_link('編集する', '<div class="edit-button">', '</div>');

CSSで装飾:

.edit-button a {
  display: inline-block;
  padding: 6px 12px;
  background: #0073aa;
  color: #fff;
  border-radius: 3px;
  text-decoration: none;
}

.edit-button a:hover {
  background: #005177;
}

edit_post_link()の出力例

実際に表示されるHTMLはこのようになります。

<a href="https://example.com/wp-admin/post.php?post=42&action=edit">この投稿を編集</a>

edit_post_link()のセキュリティ面

  • URLはWordPressコアが生成するので安全
  • 権限チェックも自動で行われる
  • 未ログインや権限がない場合は何も出力しない

URLだけが欲しい場合

get_edit_post_link()を使います。

get_edit_post_link()の例

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

違い:

  • get_edit_post_link() → URLを文字列で返す
  • edit_post_link() → HTMLを直接出力

edit_post_link()のよくある質問

ゲストでも見えますか?

いいえ。ログインユーザーかつ編集権限がある場合のみ表示。

カスタム投稿タイプでも使える?

はい、問題なく動作します。

表示テキストを一括で変更できる?

$link引数に好きな文字を指定できます。

コメント編集リンクはどうする?

edit_comment_link()を使います。

応用:条件分岐で表示を切り替える

たとえば特定のカスタムロールだけに表示したい場合

if (current_user_can('manage_options')) {
  edit_post_link('管理者編集リンク');
}

他の関連関数

関数用途
edit_comment_link()コメント編集リンクを出力
get_edit_post_link()投稿編集リンクのURLを取得
edit_term_link()タクソノミー用の編集リンク

実用的なコード例

投稿とページ共通の編集リンク

single.phppage.phpに入れると、投稿・固定ページで共通に動作します。

<footer class="entry-footer">
  <?php edit_post_link(
    '編集',
    '<span class="edit-link">',
    '</span>'
  ); ?>
</footer>

デザインを整える

例えばテーマで編集リンクを目立たせるために以下のようにCSSを用意します。

.edit-link a {
  background: #f7f7f7;
  color: #333;
  padding: 4px 8px;
  border: 1px solid #ddd;
  border-radius: 4px;
  text-decoration: none;
  font-size: 0.9em;
}
.edit-link a:hover {
  background: #e5e5e5;
}

まとめ

  • edit_post_link()投稿編集画面へのリンクを出力するテンプレートタグ
  • ログイン中で権限があるユーザーのみ表示
  • $link, $before, $after, $idでカスタマイズ可能
  • カスタム投稿タイプも対応
  • URLだけ取得したい場合はget_edit_post_link()

ポイント

  • 権限チェックは自動
  • セキュリティもコアに準拠
  • CSSで装飾して使いやすく
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次