我们正在对一个站点进行一些SEO调整,我们的SEO专家告诉我们需要删除<h3>
标签来自#reply-title
元件,从第1554行输出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()
; 然后挂接一个我们自己函数的副本,这只是一个副本,只需对这一行进行简单的更改。
但与此同时,对社区进行民意调查从来没有坏处。关于如何以可持续(非核心可黑客)的方式修改该标记,有什么想法吗?
需要注意的是,使用一些CSS或JS无法解决这一问题。必须处理实际的可爬行DOM。
再次感谢stack。
SO网友:Felipe Rodrigues
今天,有一个本机选项可以做到这一点,而无需对内核进行黑客攻击,也无需对输出缓冲区进行复杂的过滤。你只需要使用过滤器\'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;
}
在这个例子中,我用一个span标签包装了这个标题,这个标签对名为
.h4
, 具有与原始h4标记相同的样式:
h4, .h4 {
/* styles */
}
这样,您就可以从标题中保留样式,而不会影响您的SEO。(:
如果您使用的是Bootstrap,那么这个类已经存在,并且对所有标头的样式都与我上面提到的相同。从H1到H6以及相应的等级。
SO网友:Ov3rfly
有一个类似的问题,谷歌等发现的短博客条目显示的是评论回复标题,而不是博客条目内容。
此解决方案缓冲注释表单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">
, 上述代码涵盖了这两种情况。