
comment_author_url_link()の用途
comment_author_url_link()
は、コメント投稿者の名前を、その人が入力したウェブサイトURLへのリンクとして出力する関数です。
この関数を使うと、コメント欄で投稿者の名前をクリックすると、投稿者のウェブサイトへ移動できるリンクが自動的に生成されます。
例えば、コメント投稿者が以下を入力した場合:
- 名前:山田太郎
- ウェブサイトURL:https://example.com
この関数を呼ぶと次のようなHTMLが出力されます。
<a href="https://example.com">山田太郎</a>
投稿者がURLを入力していない場合は、単に投稿者名を表示します。
comment_author_url_link()の公式ドキュメント
実はこの関数はWordPressコアには直接用意されていません。comment_author_url_link()
という名前の関数は、古いテーマやカスタムコードで独自に定義されているケースが多いです。
そのため、WordPressの標準機能で同等の動作をする関数としては、comment_author_link()
が公式に存在します。
この comment_author_link()
は、まさに投稿者の名前をURLにリンクする処理を行う標準の関数です。
つまり、もしcomment_author_url_link()
がテーマやプラグインで使われている場合、
function comment_author_url_link() {
comment_author_link();
}
のように定義されている可能性が高いです。
よって、実際にはcomment_author_link()
と同じ意味で使われていることが多いため、
この解説では、標準機能の comment_author_link()
を中心に詳しく説明します。
comment_author_link() との関係
comment_author_link()
この関数は、コメント投稿者がURLを入力していれば、名前をリンクにして出力します。
入力がなければ、リンクは付けずにテキストのみ表示します。
具体的な例で見てみます。
comment_author_url_link()の出力例
URLが入力されている場合
<?php comment_author_link(); ?>
出力:
<a href="https://example.com">山田太郎</a>
URLが未入力の場合
出力:
山田太郎
このように「入力があるときだけリンクにする」動作を自動で行います。
自分で同じ動作を行いたい場合
comment_author_link()
と同等の処理を自作したい場合は、以下のコードで同じ結果を得られます。
<?php
$url = get_comment_author_url();
$name = get_comment_author();
if ($url) {
echo '<a href="' . esc_url($url) . '" rel="nofollow ugc">' . esc_html($name) . '</a>';
} else {
echo esc_html($name);
}
?>
このようにすれば、表示を自由にカスタマイズできます。
rel属性について
リンクにrel="nofollow ugc"
を付けるのが推奨されます。
理由:
- コメント欄はスパムリンクの温床になりやすい
- SEO上、Googleから不自然なリンクと判断されるリスクがある
ugc
は「ユーザー生成コンテンツ(User Generated Content)」を明示する属性
このため、リンクの信用度を下げるために nofollow を付けるのが一般的です。
フィルター
comment_author_link()
では、出力にフィルターを適用できます。
get_comment_author_link フィルター
get_comment_author_link
フィルターを使うことで、HTMLを加工可能です。
例:リンクのクラスを一括で追加する場合
add_filter('get_comment_author_link', function($return){
return str_replace('<a ', '<a class="comment-author-link" ', $return);
});
出力を取得したい場合
comment_author_link()
は直接出力を行う関数です。
出力ではなく、値を取得したい場合は get_comment_author_link()
を使います。
例:
$link = get_comment_author_link();
echo '<div class="custom-author">' . $link . '</div>';
これにより、リンクHTMLを変数として受け取れます。
関連する関数
ここで改めて関連関数を整理します。
関数名 | 内容 |
---|---|
comment_author() | 投稿者の名前を表示する(テキストのみ) |
comment_author_url() | 投稿者が入力したURLを表示する |
get_comment_author_url() | 投稿者のURLを取得する(値のみ) |
comment_author_link() | 投稿者の名前をURLリンクにして表示(自動的にリンクをつける) |
get_comment_author_link() | 投稿者の名前リンクHTMLを取得する |
URLリンクを完全にカスタマイズしたい場合
comment_author_link()
で満足できない場合、上記で紹介した「自作のif文」で表示を制御するのがベストです。
たとえば、target=”_blank”を付ける場合
<?php
$url = get_comment_author_url();
$name = get_comment_author();
if ($url) {
echo '<a href="' . esc_url($url) . '" target="_blank" rel="nofollow ugc">' . esc_html($name) . '</a>';
} else {
echo esc_html($name);
}
?>
こうすることで
- 別タブで開く
- nofollow を付ける
- クラスを付ける
などの細かい調整が可能です。
よくある誤解
comment_author_url_link() は WordPressコア関数ではない
テーマのカスタム関数である可能性が高いです。
comment_author_link()
を使えば同様の動作が実装できます。
comment_author_url_link()のまとめ
comment_author_url_link()
は、実際にはcomment_author_link()
の動作をするカスタム関数である場合が多い。- 投稿者がURLを入力していればリンク、入力していなければテキストのみ表示する。
- WordPressの標準関数としては
comment_author_link()
が正式に用意されている。 - 出力にフィルターが適用できるのでカスタマイズも簡単。
- rel=”nofollow ugc”を付けるのが推奨。