是否未显示COMMENT_REPLY_LINK?

时间:2012-11-03 作者:AndrettiMilas

当我使用下面的代码时,除了回复链接之外,所有内容都会显示出来!有人知道我做错了什么吗?我希望链接显示“回复”一词

现场示例:http://themeforward.com/demo2/?p=1948#commentlist

在我的标题中:

<?php
if ( is_singular() && comments_open() && get_option(\'thread_comments\') )
  wp_enqueue_script( \'comment-reply\' );
?>
在注释中。php:

<?php if($comments) : ?>  
    <?php foreach($comments as $comment) : ?>  
        <li id="comment-<?php comment_ID(); ?>">  
            <?php if ($comment->comment_approved == \'0\') : ?>  
                <p>Your comment is awaiting approval</p>  
            <?php endif; ?>
<?php if(function_exists(\'get_avatar\')) { echo get_avatar($comment, \'60\'); } ?>
<cite class="fn"><?php comment_author_link(); ?> on <?php comment_date(); ?> at <?php comment_time(); ?></cite>
<?php echo comment_reply_link(array(\'depth\' => $depth, \'max_depth\' => $args[\'max_depth\'])); ?>
            <?php comment_text(); ?>  

        </li>  
    <?php endforeach; ?>  
<?php else : ?>  
    <p>No comments yet</p>  
<?php endif; ?>  

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我的建议有两个方面:

确保正确地将comment-reply 脚本将硬编码的注释列表替换为wp_list_comments()

排队comment-reply

我建议comment_form_before():

function wpse71451_enqueue_comment_reply() {
    if ( get_option( \'thread_comments\' ) ) { 
        wp_enqueue_script( \'comment-reply\' ); 
    }
}
// Hook into comment_form_before
add_action( \'comment_form_before\', \'wpse71451_enqueue_comment_reply\' );

使用wp_list_comments() 使用代码中的默认输出:

<?php if($comments) : ?>  
    <ol class="commentlist">
        <?php wp_list_comments(); ?>
    </ol>
<?php else : ?>  
    <p>No comments yet</p>  
<?php endif; ?>  
如果需要注释列表的特定标记,可以将回调作为参数传递给wp_list_comments(). 但我强烈建议首先确保所有内容都与默认输出兼容,然后尝试进行自定义。

您可以在回调中使用自己的自定义标记,但需要确保定义所使用的变量,例如$depth$args. 如果您可以提供特定的标记问题,我可以帮助构建回调。

SO网友:kaiser

您只是缺少评论回复脚本。把它排队,你就是唐。

// Add this to your bootstrap, which should be hooked to `after_setup_theme`
# Add Scripts
add_action( \'wp_enqueue_scripts\', \'wpse71451_comment_scripts\', 0 );
/**
 * Scripts
 * + Comment reply
 * 
 * @return void
 */
function wpse71451_comment_scripts()
{
    # Comment reply script
    if ( 
        is_singular() 
        AND get_option( \'thread_comments\' ) 
    )
        wp_enqueue_script( \'comment-reply\' );
}

SO网友:Nabil Kadimi

如果您正在使用wp_list_comment 使用自定义回调,即:

<?php wp_list_comments(array(\'callback\' => \'my_wp_list_comment\')); ?>
然后确保调用时传递了正确的深度参数comment_reply_link 在回调中,如下所示:

<?php
    function my_wp_list_comment( $comment, $args, $depth ) {

        // ...blah

        // The actual comment
        comment_text(); 

        // The comment reply link with the correct parameters
        comment_reply_link( array( \'depth\' => $depth, \'max_depth\' => $args[ \'max_depth\' ] )
            , $comment->comment_ID
            , $comment->comment_post_ID
        );
    }
?>

结束

相关推荐

是什么原因导致wp-Comments-post.php重定向到浏览器的IP地址?

我有一个WordPress副本正在运行,它最近已经从共享主机转移到我控制的VPS上。虽然同一站点的测试副本在同一实例的另一个vhost上、在同一IP地址上正确运行,但在我将公共站点移到另一个vhost上之后,注释表单开始将访问者重定向回自己的IP地址,并显示302 Found 代替成功的302 Moved Temporarily.运行WP 3.4.1,我尝试了:从仪表板重新安装WP,并检查所有插件都是最新的,停用所有插件并将主题设置为211,与工作测试安装不同,以检查它们是否是来自多个IP、计算机和浏览器