このスクリーンショットに示すように、コメント投稿者のリンクを変更したいと思います。
GitHubの私のテストプラグイン では、最初に次のコードを試してみました。
define('PROFILE', '<a href="/user/%s" rel="external nofollow" class="url">%s</a>');
function get_comment_author_link($cid) {
$uid = get_comment_author($cid);
return sprintf(PROFILE, $uid->ID, $uid->name);
}
add_action('get_comment_author_link', 'get_comment_author_link');
しかし、wp-includes/comment-template.php
というファイルを調べることによって、get_comment_author_link
の引数はコメントIDではなく、<a href="...">...</a>
を含む文字列であることがわかりました。フック)。
コメンターのリンクを変更するための適切なフックや方法を教えてください。
get_comment_author_link
フックを使うことができます。これは get_comment_author_link()
テンプレートタグの一部です。それから、あなたはそれに応じたuser_id
を取得する必要があります。これは$comment
グローバルを通して行うことができ、それに応じて必要なリンクを構築します。
以下に示すような使用例
add_filter( 'get_comment_author_link', 'wpse144835_custom_comment_author_link' );
function wpse144835_custom_comment_author_link( $link ) {
global $comment;
$comment_user_id = $comment->user_id;
// code to create the new link
return $new_link;
}
編集:
あなたの質問に関して答えると、相応のコメントは残念ながら削除されているので、これは一種の情報のショートリストになりました。そこにはたくさんありますが、実際に答えるには多すぎますが、追加情報をいくつか示します。
グローバルに利用可能なので、$comment->comment_author
を使うことができます
関数については、return
またはecho
の必要に応じて、 get_comment_author()
または comment_author()
を使用できます。
Codex:Global Variables で、それらについての概要を見ることができます。
WP_Comment_Query
とWalker_Comment
クラスがあります
例えばcomment_authorコーデックスページには コメント関連関数のリストがあります
さらに、 comment-template.php
と comment.php
を見てみることをお勧めします。
試してもらえますか。
$id = get_comment( get_comment_ID() )->user_id;
グーグル中にこの解決策を見つけたところですが、テストする環境がありません。
その関数の出力は、著者プロフィールへのリンクを含むaタグで、その入力は間違いなくIDです。
その関数の出力を変更したい場合は、フィルタが必要で、aタグ(または文字列に作用する同様のメソッド)をstr_replaceする必要があります。 ( get_comment_author_link()をどこで修正するか? を参照)
私はもっと重要な質問だと思います:あなたはまさにここで何を達成しようとしていますか?
理論上、コメンターリンクはテーマ/プラグインごとに異なる方法で実装することができます。これはget_comment_author_url()で行うことも、get_comment()でコメントオブジェクトから直接取得することも、その他の方法で行うこともできます。
ただし、get_comment_author_link()の出力を変更するには、上記の例を参照してください。