受密码保护的帖子中的评论数消息

时间:2012-12-23 作者:Ed T.

我有一个密码保护的帖子comments_popup_link(\'No Comments\', \'1 Comment\', \'% Comments\'); 函数显示“输入密码以查看评论”消息问题是,是否可以在不接触核心文件的情况下更改此消息,或者应用过滤器或类似的东西。谢谢

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

唯一可以改变的是gettext:

add_action( \'loop_start\', \'wpse_77028_switch_filter\' );
add_action( \'loop_end\',   \'wpse_77028_switch_filter\' );

/**
 * Turn comment text filter on or off depending on global $post object.
 *
 * @wp-hook loop_start
 * @wp-hook loop_end
 * @return  void
 */
function wpse_77028_switch_filter()
{
    $func = \'loop_start\' === current_filter() ? \'add_filter\' : \'remove_filter\';
    $func( \'gettext\',    \'wpse_77028_comment_num_text\', 10, 3 );
}

/**
 * Change default text for comments_popup_link()
 *
 * @wp-hook gettext
 * @param   string $translated
 * @param   string $original
 * @param   string $domain
 * @return  string
 */
function wpse_77028_comment_num_text( $translated, $original, $domain )
{
    if ( \'Enter your password to view comments.\' === $original
        and \'default\' === $domain
        )
        return \' \';

    return $translated;
}
不幸的是,这相当昂贵:gettext 多次调用,每次都会运行筛选器。您无法在第一次匹配后停用它,因为每页可能需要多次。我添加了一个包装器函数,以确保它仅在存在全局$post 对象

结束

相关推荐

Ajax comments not working

我遵循了“ajaxify”wordpress评论的教程,其中不会重新加载页面:jQuery(\'document\').ready(function ($) { $(\'#commentform\').each(function () { var commentform = $(this); // find the comment form commentform.prepend(\'<div id=\"comment-status\"