web-dev-qa-db-ja.com

返信タイトルI.DのH3タグを削除する方法

私たちはあるサイトに対していくつかのSEOの調整を行っています、そして私たちのSEOの第一人者は<h3>の1554行目から出力される#reply-title要素からcomments-template.phpタグを削除する必要があることを私たちに知らせます。コメントフォームのヘッダーテキストです。

ここで見られるように:

<?php if ( comments_open( $post_id ) ) : ?>
        <?php do_action( 'comment_form_before' ); ?>
        <div id="respond">
            <h3 id="reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
            <?php if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) : ?>

comment_form();に関連する多数のフィルターとフックを知っていますが、<h3>はハードコードされています。

このため、<h3 id="reply-title"></h3>を単なる<div id="reply-title"></div>に置き換えるための持続可能な解決策を考え出すことはできませんでした。

最速/最も簡単なオプションは、comment_form()への呼び出しを単にフック解除することかもしれません。そして私たち自身の関数のコピーをフックしてください。それは単なるコピーであり、その1行に簡単な変更を加えたものです。

しかし、それまでの間、コミュニティに投票しても害はありません。持続可能な(コアではないハッキング可能な)方法でそのマークアップを変更する方法について何かアイデアはありますか?

これはCSSやJSによっては解決できないことに注意してください。実際のクロール可能なDOMを処理する必要があります。

ありがとうスタック。

3
AhSo

今日では、コアをハックすることなく、または出力バッファを使用してトリッキーなフィルタを実行することなく、これを行うためのネイティブオプションがあります。あなたは、フィルタ'comment_form_defaults'を使い、'title_reply_before''title_reply_after'キーから値を編集する必要があります。

add_filter( 'comment_form_defaults', 'custom_reply_title' );
function custom_reply_title( $defaults ){
  $defaults['title_reply_before'] = '<span id="reply-title" class="h4 comment-reply-title">';
  $defaults['title_reply_after'] = '</span>';
  return $defaults;
}

この例では、.h4という名前のクラスで、SEOに影響を与えないspanタグでタイトルを囲みました。元のh4タグと同じスタイルです。

h4, .h4 {
/* styles */
}

このように、あなたはあなたのSEOを台無しにせずにヘッダーからスタイルを保つことができます。 (:

Bootstrapを使用している場合、このクラスはすでに存在しており、上で述べたのと同じ方法ですべてのヘッダーに対してスタイルが設定されています。 H1からH6までとそれぞれのクラス。

5

同様の問題を抱えていた、グーグルなどによって見つけられた短いブログエントリは、ブログエントリのコンテンツの代わりにコメント返信タイトルを示しました。

この解決策は、コメントフォームhtmlをバッファし、印刷する前に<h3 id="reply-title"..>を別のタグに置き換えます。

function my_comment_form_before() {
    ob_start();
}
add_action( 'comment_form_before', 'my_comment_form_before' );

function my_comment_form_after() {
    $html = ob_get_clean();
    $html = preg_replace(
        '/<h3 id="reply-title"(.*)>(.*)<\/h3>/',
        '<p id="reply-title"\1>\2</p>',
        $html
    );
    echo $html;
}
add_action( 'comment_form_after', 'my_comment_form_after' );

注:古いWordPressバージョンでは、HTMLは<h3 id="reply-title">で、3.6以降なので<h3 id="reply-title" class="comment-reply-title">です。どちらの場合も上記のコードでカバーされています。

3
Ov3rfly

コアをハックせずにその特定の<h3>要素を変更する方法はありません(そしてそれをしないことをすでに知っています)が、あなたはまだあなた自身のコメントフォームを作成するか、あなたが欲しいマークアップを持つコメントプラグインを使うことができます。

絶対に、他の方法を使用したくない場合は、フォームのHTML出力をばかげて長い文字列にキャプチャし、それにpreg_replaceを実行して問題のある<h3>を変更し、その文字列化されたHTMLフォームをDOMにエコーできます。

0
Morgan Estes

どのテキストを参照しているのか正確にはわかりませんが、これらのうちの1つが役立つか、少なくとも何らかのアイデアを与えることができます。

add_filter( 'comment_author_says_text', 'sp_comment_author_says_text' );
function sp_comment_author_says_text() {
    return 'author says';
}


add_filter( 'comment_form_defaults', 'sp_comment_form_defaults' );
function sp_comment_form_defaults( $defaults ) {

    $defaults['title_reply'] = __( 'Leave a Comment' );
    return $defaults;

}

出典

0
Brad Dalton