
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
アンカーリンクを作るその他の方法
the_permalink()
にそのまま文字列を付ける
<a href="<?php the_permalink(); ?>#section1">
セクション1へ
</a>
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()
を基本にする