it-swarm.com.de

Zeige alle Beiträge einer bestimmten Kategorie/eines bestimmten Autors

Ich habe keine Erfahrung mit WordPress. Mein Ziel ist es, alle Beiträge auf der Seite anzuzeigen.

Ich habe versucht, Beiträge auf einer Seite wie der folgenden anzuzeigen:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
<?php endwhile; else: ?>
  <p><?php _e( 'Sorry, no pages found.' ); ?></p>
<?php endif; ?>

Ich habe das Problem, dass standardmäßig maximal 5 Beiträge angezeigt werden. Ich habe versucht, einen benutzerdefinierten WP_Query zu verwenden:

<?php 
  $all_query = new WP_Query(array(
    'post_type'=>'post',
    'post_status'=>'publish',
    'posts_per_page'=>-1,
  ));
  if ($all_query->have_posts()) : while ($all_query->have_posts()) : $all_query->the_post();
?>

Es werden alle Beiträge, aber auch alle Beiträge auf Kategoriearchivseiten (d. H. Beiträge aus einer anderen Kategorie) angezeigt.

Soweit ich weiß, kann ich eine archive.php Seite für Kategorien und Autoren erstellen.

Gibt es eine Möglichkeit, mit loop nur die Beiträge der aktuellen Kategorie oder des aktuellen Autors anzuzeigen?

1
Frelseren

Die Anzahl der Beiträge, die standardmäßig in einer Schleife angezeigt werden, wird durch Einstellungen> Blogseiten festgelegt, die höchstens angezeigt werden . Um alle Beiträge anzuzeigen, können Sie eine große Zahl eingeben, aber -1 (der Wert, der für den Parameter posts_per_page in WP_Query verwendet wird) funktioniert hier nicht.

Es ist möglich, alle Posts in den Kategorien- und Autorenarchiven anzuzeigen, während eine begrenzte Anzahl von Posts in Ihrem Blog-Hauptbereich angezeigt wird. Verwenden Sie dazu die Einstellung Blog-Seiten, um höchstens anzuzeigen, um die Anzahl der im Hauptblog anzuzeigenden Beiträge zu konfigurieren, und ändern Sie dann mit dem Hook pre_get_posts die anderen Archive entsprechend Ihre Präferenzen. Fügen Sie den folgenden Code zur functions.php-Datei Ihres Themas hinzu:

/**
 * Modify the query to show all posts on category and author archives.
 * 
 */
function wpse238882_pre_get_posts( $query ) {
  if ( ( $query->is_author() || $query->is_category() ) && $query->is_main_query() ) {
    $query->set( 'posts_per_page', -1 );
  }
}
add_action( 'pre_get_posts', 'wpse238882_pre_get_posts' );

Sie können weiterhin die Vorlagen author.php und category.php verwenden, um die Ausgabe Ihrer Autoren- und Kategoriearchive anzupassen. Dies ist jedoch nicht erforderlich, um einfach die Anzahl der angezeigten Beiträge zu ändern, wie oben gezeigt wurde. Weitere Informationen zum Anpassen von Vorlagen finden Sie im Codex-Eintrag Vorlagenhierarchie .

1
Dave Romsey
<?php

//for each category, show all posts
$cat_args = array(
    'orderby'   => 'name',
    'order'     => 'ASC'
);
$categories = get_categories( $cat_args );

foreach( $categories as $category ) {

    $args = array(
        'showposts'         => -1,
        'post_per_page'     => -1,
        'category__in'      => array($category->term_id),
        'caller_get_posts'  =>1
    );
    $posts = get_posts( $args );

    if( $posts ) {
        echo '<p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name . '</a></p>';

        foreach( $posts as $post ) {
            setup_postdata( $post );

            while ( have_posts() ) : the_post(); 

                the_title( '<div>', '</div>' );

            endwhile;hp
        } // foreach($posts
    } // if ($posts
} // foreach($categories
0
Maria Teresa