date.php zeigt alle Beiträge an. wie man es repariert?

Ich verwende die folgende function für category.php . Es funktioniert gut.

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 ('
'); while (have_posts()) : the_post(); $excerpt = get_the_excerpt(); $date = explode(",", get_the_time("F,j,Y", "", "", false)); print('
'); print('
' . $date[1] . '
' . substr($date[0], 0, 3) . '
'); print ('
'); the_title('

', '

'); print ('
'); print ('
'); print ('

'); if (strlen(get_the_content()) > 100) { $content = get_the_content(); echo str_replace(' ', '

', substr($content, 0, 300)). "...."; echo '

Read More'; } else { the_content(); echo "

"; } print ('
'); print('
'); endwhile; if (function_exists("pagination")) { pagination(); } print ('
'); endif; }

es funktioniert gut und zeigt die 3 posts per peroper kategorien. ZB: wenn Sie auf die Kategorie 1 klicken und es zeigt Post unter Kategorie 1 und wenn Sie auf die Kategorie 2 klicken und es zeigt Post unter Kategorie 2

Jetzt möchte ich das gleiche Design auf meiner Date.php machen . Also habe ich die genannte function erstellt

 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 ); 

ZU

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array('posts_per_page' => 3, 'paged' => $paged ); 

Jetzt ist das Problem, wenn ich die date_page_list(); Es zeigt alle Beiträge aus dem Blog. Wie kann ich das beheben? Jede Hilfe wird sehr geschätzt.

Der folgende Code funktioniert ordnungsgemäß und gibt den richtigen Post für die richtigen Daten. aber ich muss den gleichen Stil wie meine category.php machen

  10 ) ); while ( have_posts() ) : the_post(); ?> 

  • <a href="https://wordpress.stackexchange.com/questions/128320/date-php-shows-all-posts-how-to-fix-it/" title="">

  • Solutions Collecting From Web of "date.php zeigt alle Beiträge an. wie man es repariert?"

    Sehen Sie sich die Template-Hierarchie sehr gut an.

    Sie sollten keine neuen Abfragen für diese Seiten erstellen müssen. So nah wie ich kann WordPress, hat bereits die Arbeit getan. Du machst es einfach nochmal. Das ist ineffizient.

    Die einzige Sache, die ich sehe, dass Sie möglicherweise anpassen müssen, ist das posts_per_page Argument. Das kannst du mit 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); } } ); 

    Ich bin mir auch nicht sicher, warum Sie hierfür eine function benötigen. Die Vorlagen selbst sollten ausreichen. Um Ihren Formatierungscode wiederzuverwenden, legen Sie alles innerhalb der while in eine andere Datei und laden Sie sie mit get_template_part . Ihre Vorlagen würden dann etwa so aussehen:

     if(have_posts()) { print ('
    '); while (have_posts()) { the_post(); get_template_part('datecatformat'); // loads datecatformat.php } }

    Indem Sie die Dinge auf diese Weise überarbeiten, beheben Sie Ihr Problem, indem Sie WordPress erlauben, das zu tun, was es bereits tut, anstatt die eigenen Abfragen zu überlisten.