permalink_anchor()

permalink_anchor()
目次

permalink_anchor()とは?

まず大事なポイントからお伝えします。

permalink_anchor()という関数はWordPressの標準関数ではありません。

WordPressコア(本体)や公式テンプレートタグには、この関数は定義されていません。

つまり、the_permalink(), get_permalink(), permalink_comments_rss()などのような正式なAPIではないため、

  • サードパーティのテーマやプラグイン独自の関数
  • 自作テーマで用意したオリジナル関数

である可能性が非常に高いです。

どういう誤解が生じやすいのか?

「permalink」という名前が含まれていることで、以下のように混同しやすいです。

よく使うパーマリンク関連関数説明
the_permalink()現在の投稿のURLをechoする
get_permalink()現在の投稿のURLを返す
permalink_comments_rss()現在の投稿のコメントフィードURLをechoする

この3つはいずれもWordPressコアに備わった公式テンプレートタグです。

なぜ「permalink_anchor()」という名前が出てくるのか?

以下のような理由が考えられます。

1. サードパーティテーマで実装されている

商用テーマや配布テーマのfunctions.phpに、自作の便利関数として書かれている。

2. 自分でfunctions.phpに追加した

過去にオリジナル関数を作ったが、標準APIと混同して記憶している。

3. 他のCMSやフレームワークとの混同

たとえばMovable TypeやDrupalなどの「パーマリンク+アンカーリンク」を出力する関数と混同している。

4. コード解説ブログで便宜的に作られていた

「permalink_anchor()を自作しましょう」というサンプルを、そのまま標準と思い込んでしまった。

では「アンカーリンク」を作るにはどうすればいい?

WordPressで投稿URLの末尾にアンカー(#)を付けたいときは、以下のようにget_permalink()を使います。

基本例

特定のアンカーを付けてリンクを作る:

<a href="<?php echo esc_url( get_permalink() . '#comments' ); ?>">
  コメント欄へ移動
</a>

これで、クリックするとコメント欄にスクロールするリンクになります。

出力結果:

<a href="https://example.com/sample-post/#comments">
  コメント欄へ移動
</a>

投稿IDを指定する場合

<a href="<?php echo esc_url( get_permalink(42) . '#my-anchor' ); ?>">
  投稿42の特定位置へ
</a>

カスタム関数として自作する場合

permalink_anchor()を作りたい」という場合は、以下のように自作できます。

自作関数の例

functions.phpに追加:

function permalink_anchor($anchor = '') {
    $url = get_permalink();
    if (!empty($anchor)) {
        $url .= '#' . ltrim($anchor, '#');
    }
    echo esc_url($url);
}

使い方

<a href="<?php permalink_anchor('comments'); ?>">
  コメントへ移動
</a>

出力結果:

https://example.com/sample-post/#comments

アンカーリンクを作るその他の方法

  1. the_permalink()にそのまま文字列を付ける
<a href="<?php the_permalink(); ?>#section1">
  セクション1へ
</a>
  1. get_permalink()を組み合わせる
<?php
$url = get_permalink() . '#section1';
?>
<a href="<?php echo esc_url($url); ?>">セクション1へ</a>

SEOへの影響

アンカー(#以降)はブラウザの動作だけに影響し、SEOに大きな影響は与えません。

ただし、Googleがインデックス用に特定のアンカーを認識する場合があり、ページジャンプとして使えます。

よくある質問

permalink_anchor()をWordPress Codexで探しても見つからない

標準関数ではないため、公式ドキュメントには存在しません。

どのテーマで使われる?

一部のテーマ開発者が独自に作っているケースがあるので、functions.phpを確認する必要があります。

エラーが出る

関数が未定義の場合、次のようなエラーが出ます。

Fatal error: Uncaught Error: Call to undefined function permalink_anchor()

この場合、必ずget_permalink()に置き換えてください。

正しい代替手段

permalink_anchor()が存在しない場合は、基本的に**get_permalink()**を使って手動で組み立てる方法を選びます。

例:アンカーを柔軟に付加

<?php
$post_url = get_permalink();
$anchor = 'comments';
?>
<a href="<?php echo esc_url( $post_url . '#' . $anchor ); ?>">
  コメントへ移動
</a>

まとめ

  • permalink_anchor()WordPressコアには存在しない
  • おそらくサードパーティテーマや自作関数
  • 標準関数はthe_permalink()get_permalink()
  • アンカーリンクはget_permalink() . '#anchor'で簡単に実現可能
  • エラーが出る場合はget_permalink()に置換すればOK

ポイント

  • 「permalink_~」という名前の関数は多いので混同しやすい
  • 標準関数か確認するときはWordPress Codexや開発者ハンドブックを活用
  • URLを柔軟に組むならget_permalink()を基本にする
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次