我正在使用以下函数category.php. 它工作得很好。
function cat_page_list(){
/*
post : returns the post for category page
*/
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$cat1 = get_query_var(\'cat\');
$cat_name = get_category($cat1)->name;
$args = array(\'cat\'=> $cat1, \'posts_per_page\' => 3, \'paged\' => $paged );
query_posts( $args);
if(have_posts()) :
print (\'<div class="row">\');
while (have_posts()) : the_post();
$excerpt = get_the_excerpt();
$date = explode(",", get_the_time("F,j,Y", "", "", false));
print(\'
<section class="large-4 columns">
<section class="main_post cbox1">
<section class="post_inner row collapse">\');
print(\'<div class="large-2 columns small-2">
<span class="date_format">
<span class="date_num">\' . $date[1] . \'
</span><br/><span class="date_month">\' . substr($date[0], 0, 3) . \'
</span></span></span>
</span>
</div>\');
print (\'<div class="large-10 columns small-10">\');
the_title(\'<a class="blogroll_title" href="\' . get_permalink() . \'"><h1 class="heading_blog">\', \'</h1></a>\');
print (\'</div>\');
print (\'<!--end post_inner --></section>\');
print (\'<div class="row collapse post_content"><p>\');
if (strlen(get_the_content()) > 100) {
$content = get_the_content();
echo str_replace(\' \', \'<br /><br />\', substr($content, 0, 300)). "....";
echo \'</p><a href=" \' . get_permalink() . \' " class="read_more button button_top button_body_col11 button_radius">Read More</a>\';
}
else { the_content(); echo "</p>"; }
print (\'<!--end post_content--></div>
<section class="post_inner_bottom row collapse">\');
print(\'
<!--end post_inner_bottom --></section>
<!--end main_post cbox1 --></section>
<!-- end large-4 columns --></section>
<div class="spacer_1px"></div>\');
endwhile;
if (function_exists("pagination")) {
pagination();
}
print (\'<!-- end main row --></div>\');
endif;
}
它工作得很好,显示了peroper类别的3个帖子。例如:如果单击
category 1 并在下面显示post
category 1 如果单击
category 2 它显示了下面的帖子
category 2现在我想在我的date.php. 所以我创建了一个名为
date_page_list();
and changed the following codes only.
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$cat1 = get_query_var(\'cat\');
$cat_name = get_category($cat1)->name;
$args = array(\'cat\'=> $cat1, \'posts_per_page\' => 3, \'paged\' => $paged );
至
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array(\'posts_per_page\' => 3, \'paged\' => $paged );
现在的问题是当我打电话给
date_page_list();
它显示了博客中的所有帖子。我怎样才能解决这个问题。??任何帮助都将不胜感激。
以下代码工作正常,并为正确的日期提供正确的帖子。但我需要和我的category.php
<?php
$date1 = get_query_var($query_string.\'date\');
get_posts( array (\'posts_per_page\' => 10 ) );
while ( have_posts() ) : the_post(); ?>
<li>
<?php the_time( get_option( \'date_format\' ) ); ?> <br/>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li></br>
<?php endwhile;
wp_reset_query();?>
最合适的回答,由SO网友:s_ha_dum 整理而成
请仔细查看Template Hierarchy.
您不需要为这些页面创建新查询。我已经尽我所能完成了这项工作。你只是在重蹈覆辙。这是低效的。
我认为您可能需要调整的唯一一件事是posts_per_page
论点你可以用pre_get_posts
.
add_action(
\'pre_get_posts\',
function($qry) {
if($qry->is_main_query() && ($qry->is_date() || $qry->is_category())) {
$qry->set(\'posts_per_page\',3);
}
}
);
我也不知道为什么你需要一个函数。模板本身应该足够了。要重用格式代码,请将所有内容都放在
while
将其加载到另一个文件中
get_template_part
. 您的模板将如下所示:
if(have_posts()) {
print (\'<div class="row">\');
while (have_posts()) {
the_post();
get_template_part(\'datecatformat\'); // loads datecatformat.php
}
}
通过这种方式重新处理,您可以通过允许WordPress做它已经做得很好的事情来解决问题,而不是用您自己的查询来破坏它的查询。