首页 > 分类 > 网络百科 > 文章内容

WordPress 修改密码保护文章的评论链接文字

WordPress 的 comments_popup_link() 函数输出指向文章评论内容的链接,链接文字为评论条数。如首页和文章页中的 7 条评论,或者发表评论

我们可以通过参数来控制文字内容,例如官方给出的示例:

comments_popup_link( 'No comments yet', '1 comment', '% comments', 'comments-link', 'Comments are off for this post');

则链接文字在无评论时显示“No comments yet”,一条评论时显示“1 comment”,多条评论时显示“% comments”,其中“%”代表具体评论数量。后面两个参数与本文无关:“comments-link”定义的是给链接 a 标签内添加 class 属性的值;“Comments are off for this post”为当文章关闭评论时显示的文字内容,不过我测试了下这个参数在官方的 twentysixteen 和目前使用的主题上都无效,题外话。

而对于添加了密码保护的文章,链接文字就变成了“Enter your password to view comments.”由于英文比较长,导致目前主题在登录了用户并使用手机浏览文章页的情况下,这段文字与快捷进入后台编辑文章的 [ 编辑 ] 按钮相碰撞使得版面错位。而无密码的文章显示文字较短,排版就没有问题。因此打算替换这段文字为简短的汉字。通过搜索找到两个方法,这里记录一下。

一、判断文章是否有密码保护,输出相应内容

comments_popup_link() 处加入判断,当文章无密码保护时输出评论数链接,否则输出自定义文字。修改主题文件,将原

comments_popup_link( '发表评论', '1 条评论', '% 条评论' );

代码替换为:

if ( ! post_password_required() ) {
	comments_popup_link( '发表评论', '1 条评论', '% 条评论' );
} else {
	echo '输入密码查看评论';
}

或者直接把上面代码封装为新的函数,在主题 functions.php 中添加代码:

function custom_comments_popup_link() {
	if ( ! post_password_required() ) {
		comments_popup_link( '发表评论', '1 条评论', '% 条评论' );
	} else {
		echo '输入密码查看评论';
	}
}

再将主题文件中输出评论链接的函数 comments_popup_link() 替换为 custom_comments_popup_link(),调用这个新函数就可以了。

二、使用过滤器替换密码保护文章的链接文字

在主题 functions.php 中添加代码即可:

function custom_comment_num_text( $translation, $text, $domain ) {
	if ( 'Enter your password to view comments.' === $text && 'default' === $domain ) {
		$translation = '输入密码查看评论';
	}
	return $translation;
}
function gettext_switch_filter() {
	$do_filter = 'loop_start' === current_filter() ? 'add_filter' : 'remove_filter';
	$do_filter( 'gettext', 'custom_comment_num_text', 10, 3 );
}
add_action( 'loop_start', 'gettext_switch_filter' );
add_action( 'loop_end', 'gettext_switch_filter' );

文字的内容可以通过修改第四行单引号内的“输入密码查看评论”自定义。这种方法比较简便,不需要改动现有的含有 comments_popup_link() 函数的主题文件,一劳永逸。该方法取自:Comments number message in password protected post – WordPress Development Stack Exchange

您可能还会对这些文章感兴趣
快来发表评论吧!
发表评论

您的电子邮箱地址不会被公开。必填项已用 * 标注

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji