我正在尝试修改Wordpress中的tag.php。基本上,我将我的一般循环设置为每页默认的五个帖子。当用户点击我的标签云中的标签时,我希望它按标题显示所有相关结果。这是我在tag.php中的内容:
<p>Tag: <?php single_tag_title(); ?></p>
<?php if (have_posts()) : while (have_posts ()) : the_post (); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php endwhile; endif; ?>
这非常有效,但它只返回默认值5。当我尝试在循环之前使用('posts_per_page'=&gt; 1000)添加wp_query时,它会返回我的所有网站帖子,而不仅仅是适当的标记。如何添加更多结果?谢谢!
答案 0 :(得分:1)
非常感谢SilverKenn的回复,我很感激。我可以用它来代替它。
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'tag'=> get_query_var('tag') );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
答案 1 :(得分:0)
而不是在尝试通过wordpress自定义内容时编辑php文件,您可以使用functions.php修改几乎所有内容,具体取决于您对主题的编码方式,
查看post_limits过滤器http://codex.wordpress.org/Plugin_API/Filter_Reference/post_limits
或pre_get_posts http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
您可以使用上述过滤器限制结果
e.g。 pre_get_posts
function cmk_custom_result( $wp_query ) {
$post_type = $wp_query->query['post_type'];
if ( $post_type == 'your-post-type' && is_tag() ) {
$wp_query->set('posts_per_page', '25');
}
}
add_filter('pre_get_posts', 'cmk_custom_result');
post_limist
function cmk_post_result_limits( $limit, $query ) {
if ( !is_admin() && $query->is_main_query() && is_tag() ) {
return 'LIMIT 0, 25';
}
return $limit;
}
add_filter( 'post_limits', 'cmk_post_result_limits', 10, 2 );
答案 2 :(得分:0)
使用get_query_var获取正确的标记,例如:'tag'=> get_query_var('tag')
然后在帖子数组中使用-1,以便&#39; posts_per_page&#39;获取该标签的无限数量的帖子,否则将数字更改为您想要限制输出的任何内容。
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'tag'=> get_query_var('tag') );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php endwhile; ?>