问题是,您必须记住调用核心函数wp_reset_postdata()
, 在while循环之后,恢复全局$post
对象注释表单依赖于该对象,您可以使用$queryPosts->the_post()
呼叫
请注意extract()
不推荐,请检查this answer 例如,作者@toscho。
删除评论要删除评论表单,使用快捷码时,您可以查看我的answer here.
如果要在短代码之后删除注释列表和注释表单,则可以在短代码的回调中尝试以下方法之一:
Method #1 通过过滤器删除查询的注释:
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
// Remove the comment form
add_filter( \'comments_open\', \'__return_false\' );
// Remove the list of comments
add_filter( \'comments_array\', \'__return_empty_array\' );
}
Method #2 武力
get_comments()
要返回空数组,请执行以下操作:
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
// Remove the comment form
add_filter( \'comments_open\', \'__return_false\' );
// Empty comments SQL query - Run only once
add_filter( \'comments_clauses\', function( $clauses )
{
static $count = 0;
if( 0 === $count++ )
$clauses[\'where\'] .= \' AND 1=0 \';
return $clauses;
});
}
这里我们只运行一次过滤器回调,以防止出现这种情况,例如侧栏中的最近评论小部件。
Method #3 通过过滤器修改注释模板。创建空文件comments-empty.php
在您的主题和使用范围内:
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
// Modify the comment template
add_filter( \'comments_template\', function( $template )
{
if( $tmp = locate_template( \'comments-empty.php\' ) )
$template = $tmp;
return $template;
} );
}
您可以根据需要修改文件路径。
Method #4 用CSS隐藏它。示例:
if( is_singular() && post_type_supports( get_post_type(), \'comments\' ) )
{
print \'<style> #comments { display: none } </style>\';
}