如何将COMMENTS_TEMPLATE();放在循环之外?

时间:2013-09-16 作者:Gixty

我正在制作一个新模板,我需要将注释模板放置在wordpress循环之外,并且正好位于单页页脚上方。php文件。

我在谷歌上搜索过,我能找到的与我的问题相关的最佳答案是以下链接:https://stackoverflow.com/questions/6384205/displaying-the-wordpress-comments-template-outside-the-loop

然而,这并不奏效。所有帖子上都出现了相同的评论。

那么,如何在wp循环外显示注释?

编辑:这是单曲。php文件

<?php
get_header(); ?>

<div id="primary" class="site-content">
    <div id="content" role="main">

        <?php while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( \'content-single\', get_post_format() ); ?>

            <nav class="nav-single">
                <h3 class="assistive-text"><?php _e( \'Post navigation\', \'twentytwelve\' ); ?></h3>
                <span class="nav-previous"><?php previous_post_link( \'%link\', \'<span class="meta-nav">\' . _x( \'&larr;\', \'Previous post link\', \'twentytwelve\' ) . \'</span> %title\' ); ?></span>
                <span class="nav-next"><?php next_post_link( \'%link\', \'%title <span class="meta-nav">\' . _x( \'&rarr;\', \'Next post link\', \'twentytwelve\' ) . \'</span>\' ); ?></span>
            </nav><!-- .nav-single -->



        <?php endwhile; // end of the loop. ?>

    </div><!-- #content -->
</div><!-- #primary -->
<div id="secondary" class="sidebar-area" role="complementary">
    <?php get_sidebar(secondary); ?>
    <?php get_sidebar(); ?>
</div><!-- #secondary -->

<?php
comments_template( \'\', true );
?>

 <?php get_footer(); ?>

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

好的,经过一些研究,我想出了解决方案。解决方案是在循环外显示wordpress注释,以及如何在循环外放置disqus注释。

First, How to place wordpress comments outside the loop:

单件。php我们需要定义一个新的全局变量来存储post id(将其放在循环中)

global $postid;
$postid = get_the_ID();
然后,我们可以使用以下代码将注释列表放置在循环之外:

<ol class="commentlist">
    <?php    
        //Gather comments for a specific page/post 
        $comments = get_comments(array(
            \'post_id\' => $postid,
            \'status\' => \'approve\' //Change this to the type of comments to be displayed
        ));

        //Display the list of comments
        wp_list_comments(array(
            \'per_page\' => 10, //Allow comment pagination
            \'reverse_top_level\' => false //Show the latest comments at the top of the list
        ), $comments);

    ?>
</ol>
您还可以放置评论表单并传递帖子id,如下所示:

<?php comment_form( $args, $postid ); ?>

For DISQUS:

单件。php,我们需要定义第二个变量来获取帖子标题(将其放入循环中):

global $dposttitle;
$dposttitle = wp_title( \'\', false);
然后添加以下通话,无论您想在何处显示您的disqus评论:

在孩子的主题函数中添加以下内容:

function disqus_embed($disqus_shortname, $postid, $dposttitle) {
    global $post;
    wp_enqueue_script(\'disqus_embed\',\'http://\'.$disqus_shortname.\'.disqus.com/embed.js\');
    echo \'<div id="disqus_thread"></div>
    <script type="text/javascript">
        var disqus_shortname = "\'.$disqus_shortname.\'";
        var disqus_title = "\'.$dposttitle.\'";
        var disqus_url = "\'.get_permalink($postid).\'";
        var disqus_identifier = "\'.$disqus_shortname.\'-\'.$postid.\'";
    </script>\';
}
最后,在single中调用disqs\\u嵌入到循环外。php

disqus_embed($disqus_shortname, $postid, $dposttitle);
请随时告诉我是否有更好的方法来实现这一点。

结束

相关推荐

Control Loop Within Loop

我试图控制一个循环中的一个循环。我想做的是显示所有帖子,并每3篇帖子插入一个自定义帖子类型。所以它会像这样“后CPT后CPT后CPT后CPT…”我是这样做的global $loop_counter; $loop_counter = 0; if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> ?> // DO STUFF <?php $loop_counter+