Php显示所有帖子。如何修复它?

时间:2014-01-02 作者:Riffaz Starr

我正在使用以下函数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(\'&nbsp;\', \'<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 并在下面显示postcategory 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();?>

1 个回复
最合适的回答,由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做它已经做得很好的事情来解决问题,而不是用您自己的查询来破坏它的查询。

结束

相关推荐

是否使用wp_LIST_CATEGORIES在INCLUDE参数中包含名称或插件?

我在本地和远程工作,通过git推送代码。我在下面设置了当前代码,它查找标记并使用wp_list_categories. 我需要使用include 参数,因为没有带标记的层次结构(在此实例中我不能使用类别)。然而,由于我在本地和远程工作,从本地到远程的ID可能会不一样。因此,理想情况下,我想包括name 或slug, 但我知道include 参数仅允许ID。有没有办法包括name 或slug 在include 参数想法:我的朋友说我们可以有一个名字列表,然后循环遍历所有名字,然后使用get\\u term\