web-dev-qa-db-ja.com

get_comments_link()およびget_comments_pagenum_link()関数によって作成されたコメントリンクの変更

現在の私のテーマはget_comments_link()を呼び出して、記事の下のコメントにリンクするための標準アンカー#commentsを作成するように要求します。ページ区切り付きコメントのget_comments_pagenum_link()関数もそうです。

私はこれらの関数の#コメントアンカーを他の文字列に置き換えたいのですが、もちろんWPのコアphpファイルは変更しません。

(pluggable.php以外の)コア関数を完全に置き換える単純なadd_filterは不可能なようです。 (Javaというよりは)PHPを使用する、コア関数の出力へのこの小さな変更を達成する他の方法はありますか?ここにstr_replace()と一緒にadd_filterを使用する方法はありますか?

これは、外国語のサイトや、URLリクエストを使ってコメントを別のページにリダイレクトする場合などに便利です。

1
maduroblanco

そのため、get_comments_pagenum_link()関数の解決法は十分簡単です。

add_filter('get_comments_pagenum_link' , 'new_get_comments_pagenum_link');
function new_get_comments_pagenum_link($content) {
    $content = str_ireplace('#comments' , '#other', $content);
    return $content;
}

これは#content#otherに置き換えるためにget_comments_pagenum_link()の出力をフィルタリングします、または他の文字列を選択できます。

フィルタリングできないget_comments_link()関数については、私は私のWordPressテーマがそれ自身のコメントリンク関数の中ですでにそれを使っていることを単に発見したので、代わりに上記の同じ方法を使ってこのテーマ関数をフィルタリングしました。

2
maduroblanco

関数get_comments_link()にはそのようなフィルタは存在しません。あなたはフィルタを持っているget_comment_link()と呼ばれる代替の関数を使うことを望むかもしれません:get_comment_link

関数get_comments_pagenum_link()にはフィルタが存在します:get_comments_pagenum_link

フィルタの仕組みについては、 プラグインAPI(Wordpress Codex) をご覧ください。そこにある情報はadd_filter()の使い方に関するすべての質問に答えるはずです。

リンクはPHPでは文字列なので、PHP文字列関数のいずれかを使用して、検索、抽出、置換を行うことができます。 PHP文字列関数の全リスト(PHPマニュアル)

1
hakre