我在档案中编辑了我的循环。php,以便使用分页和类别帖子列表小部件。我基本上是根据随机代码和想法拼凑起来的,现在离默认的post查询还很远,我很难回到原点。我需要回到原点的原因是我需要两件事:
1) 当我的帖子有两个分类标签时,我的代码把我的分类帖子搞乱了。当这种情况发生时,他们被放在错误的类别中(或者根本没有被放在)。
2) 通过这种自定义编码,我也丢失了对“标记”的查询,因此标记页面无法正常工作。
我需要回到原点,这样我可以设置标签和分类帖子,以便正确显示,但在正确的范围内<li>
这是我的风格。我不确定我是否还需要分类帖子列表小部件,因为如果我没弄错的话,我可以调用set_post_thumbnail_size();
, the_title();
, the_excerpt()
, 等等。没有小部件,只需设置我自己的列表项。
无论如何,这是我的代码,我想我需要清理一堆代码才能回到我需要去的地方。非常感谢你的帮助,我真的很感激。
<?php if (have_posts()) : ?>
<ul style="list-style-type:none;">
<?php
if ($paged == 0)
$offset = 0;
else
$offset = ($paged - 1) * 11;
global $post;
$category = get_the_category($post->ID);
$category = $category[0]->cat_ID;
$myposts = get_posts(array(\'numberposts\' => 11, \'offset\' => $offset, \'category__in\' => array($category), \'post__not_in\' => array($post->ID),\'post_status\'=>\'publish\'));
foreach($myposts as $post) :
setup_postdata($post);
?>
<li id="category_li">
<div id="image_con">
<div id="image_recent">
<a href="<?php the_permalink(); ?>"><?php set_post_thumbnail_size( 200, 200 );
the_post_thumbnail(); ?></a>
</div>
</div>
<div id="cr_content">
<a href="<?php the_permalink(); ?>">
<div class="gloss_glam_font"> <?php the_title(); ?></div>
<hr>
<div class="excerpt_cat"><?php the_excerpt(); ?></div>
</a>
</div>
<div id="clearfix">
</div>
</li>
<?php endforeach; ?>
<?php wp_reset_query(); ?>
</ul>
<?php while (have_posts()) : the_post(); ?>
<?php endwhile; ?>
<?php if (function_exists("pagination")) {
pagination($additional_loop->max_num_pages);
} ?>
<?php else :
if ( is_category() ) { // If this is a category archive
printf("<div class=\'post-content\'><p><em><strong>Not Found:</strong> Sorry, but there aren\'t any posts in the ·<strong>%s</strong>· category yet.</em></p></div>", single_cat_title(\'\',false));
} else if ( is_date() ) { // If this is a date archive
echo("<div class=\'post-content\'><p><em><strong>Not Found:</strong> Sorry, but there aren\'t any posts with this date.</em></p></div>");
} else if ( is_author() ) { // If this is a category archive
$userdata = get_userdatabylogin(get_query_var(\'author_name\'));
printf("<div class=\'post-content\'><p><em><strong>Not Found:</strong> Sorry, but there aren\'t any posts by ·<strong>%s</strong>· yet.</em></p></div>", $userdata->display_name);
} else {
echo("<div class=\'post-content\'><p><em>No posts found.</em></p></div>");
}
endif; ?>
编辑好的,我编辑了它,我不知道我在哪里。我在用我的标签。这里以php模板为例(不是category.php)。以下是我迄今为止所做的工作(基于Chip在答案中提供的代码):
function wpse63424_filter_pre_get_posts( $query ) {
if ( ! is_main_query() ) {
return $query;
} else {
if ( is_category() || is_tag() ) {
$query->set( \'posts_per_page\',11 );
}
return $query;
}
}
add_filter( \'pre_get_posts\', \'wpse63424_filter_pre_get_posts\' );
$tag = get_query_var(\'tag\');
$myposts = get_posts(\'tag__in\' => array($tag));
foreach($myposts as $post) :
setup_postdata($post);
我的想法是,我已经设置了一个每页11篇文章的过滤器,我查询一个特定的标记,将文章设置为该数组中的标记,然后相应地设置文章。当我刚运行get\\u posts()时;它每一页返回11篇未经过滤的帖子,所以我知道芯片的代码工作正常。我想我还不了解如何正确调用函数。。。
最合适的回答,由SO网友:Chip Bennett 整理而成
首先,对于布局和CSS样式,我建议为要自定义的上下文创建模板文件;i、 e.创建category.php
和atag.php
分别用于类别和标记索引存档页。无论哪种情况,请复制archive.php
(如果不存在,请复制index.php
), 并将副本重命名为category.php
. 然后,根据需要修改标记。
对于CSS,请确保使用body_class()
在主题中,然后可以使用基于*类别和标记的CSS classes applied to the <body>
tag.
下一步是定制查询,以每页输出10篇文章,而不是类别/标记存档索引页的10篇文章。为此,请使用pre_get_posts
滤器添加以下回调和add_filter()
致电至functions.php
:
function wpse63424_filter_pre_get_posts( $query ) {
if ( ! is_main_query() ) {
return $query;
} else {
if ( is_category() || is_tag() ) {
$query->set( \'posts_per_page\',11 );
}
return $query;
}
}
add_filter( \'pre_get_posts\', \'wpse63424_filter_pre_get_posts\' );
此回调告诉WordPress:
如果查询不是主查询,则返回它而不修改它。(这可以防止最近发布的小部件查询或导航菜单受到影响。)如果当前页面是类别存档索引或标记存档索引,请更改\'posts_per_page\'
查询变量至11
, 然后返回查询