web-dev-qa-db-ja.com

コメント投稿者のリンクを/ user/user_idに変更するにはどうすればいいですか?

このスクリーンショットに示すように、コメント投稿者のリンクを変更したいと思います。

screenshot

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>を含む文字列であることがわかりました。フック)。

コメンターのリンクを変更するための適切なフックや方法を教えてください。

1

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;
}



編集:

あなたの質問に関して答えると、相応のコメントは残念ながら削除されているので、これは一種の情報のショートリストになりました。そこにはたくさんありますが、実際に答えるには多すぎますが、追加情報をいくつか示します。

2
Nicolai

試してもらえますか。

 $id = get_comment( get_comment_ID() )->user_id;

グーグル中にこの解決策を見つけたところですが、テストする環境がありません。

0

その関数の出力は、著者プロフィールへのリンクを含むaタグで、その入力は間違いなくIDです。

その関数の出力を変更したい場合は、フィルタが必要で、aタグ(または文字列に作用する同様のメソッド)をstr_replaceする必要があります。 ( get_comment_author_link()をどこで修正するか? を参照)

私はもっ​​と重要な質問だと思います:あなたはまさにここで何を達成しようとしていますか?

理論上、コメンターリンクはテーマ/プラグインごとに異なる方法で実装することができます。これはget_comment_author_url()で行うことも、get_comment()でコメントオブジェクトから直接取得することも、その他の方法で行うこともできます。

ただし、get_comment_author_link()の出力を変更するには、上記の例を参照してください。

0
Pim