it-swarm.com.de

Zeige eine bestimmte Anzahl von Beiträgen auf der Taxonomie-Archivseite an

Ich habe eine Taxonomie-Archivseite, auf der ich alles unter dem Begriff "Techno" anzeige. Ich möchte in der Lage sein, dies auf 20 Beiträge auf einer Seite zu beschränken, bis es paginiert. Im Moment werden 10 auf einer Seite und 10 auf einer anderen Seite angezeigt. Dies funktioniert gut auf meiner Hauptseite, wo ich die Anzahl der Posts pro Seite auf 20 beschränke. Kann jemand sehen, warum? Hier ist mein Code

<?php

/*

Template Name: Genre

*/

//Protect against arbitrary paged values
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; 

get_header();

$object = get_queried_object();

$taxonomy = "genre"; // can be category, post_tag, or custom taxonomy name

// Using Term Slug
$term_slug = $object->slug;
$term = get_term_by('slug', $term_slug, $taxonomy);

// Fetch the count
$number = $term->count / 20;



?>
<header class="intro-archive">
        <div class="intro-body">
            <div class="container">
                <div class="row">
                    <div class="col-md-8 col-md-offset-2">
                        <h1 class="brand-heading"><?php echo $object->name; ?></h1>

                        <p class="intro-text">An archive of all the <?php echo $object->name; ?> posted on the site</p><a class="btn btn-circle page-scroll fa fa-angle-double-down animated" href="#latest" style="font-size:54px;"></a>
                    </div>
                </div>
            </div>
        </div>
    </header><!-- About Section -->

    <section class="container content-section text-center" id="latest">

        <?php 
        $j = 0;

         if ( have_posts() ) : while ( have_posts() ) : the_post(); // standard WordPress loop.

              $thumb_id = get_post_thumbnail_id();
              $thumb_url_array = wp_get_attachment_image_src($thumb_id, '370x250' );
              $thumb_url = $thumb_url_array[0];

              // Grab the artist ID from the post meta
              $artist = get_post_meta(get_the_ID(), '_artist');

              // seperate each artist id
              $explodeArray = array_filter(explode(' ', $artist[0]));

              $arrayLength = count($explodeArray);

              $i = 0;

              // If there is more than one artist attached to song loop through
              if ($arrayLength > 1) {
                foreach ($explodeArray as $array) {
                  $artist_meta[$i] = get_the_title($array);
                  $i++; 
                }
              } else {
                $artist_name = get_the_title($explodeArray[0]);
              }

              // If the current counter dividied by 4 leaves no remainder add a row
              // This splits our archive into rows with 4 elements in
              if($j % 4 == 0) { ?> 

              <div class="row ">

              <?php } ?>

                  <div class="col-md-3 col-sm-12" style="margin-top:100px;">
                        <div class="ih-item square effect3 bottom_to_top">
                            <a href="<?php the_permalink(); ?>">
                                <div class="img">
                                    <img alt="" class="image-responsive" src="<?php echo $thumb_url ?>">
                                </div>
                                <div class="info">
                                    <h3><?php if ($artist_meta) { foreach($artist_meta as $meta) { echo $meta; echo '<br />'; } } else { echo $artist_name; } ?></h3>
                                    <p><?php the_title(); ?></p>
                                </div>
                            </a>
                        </div>
                   </div>

               <?php 
                $j++;

                if ( $j != 0 && $j % 4 == 0 ) { ?>

                </div><!--/.row-->
                <?php 
                }

                endwhile; endif;
                ?>
               <div class="col-md-12">
                  <?php dem_pagination($number); ?>
               </div>
            </div>
        </section><!-- Footer -->

    <?php get_footer(); ?>   
1
pocockn

Vielleicht zeige ich hier einen sehr schnellen und (vereinfachten) schmutzigen Weg, aber würde diese Funktion ihn nicht lösen, ohne Änderungen für/in den Vorlagen vornehmen zu müssen?
(Ja, ich weiß, dass ich auch in meinen Vorlagen Abfragen mache, aber vor meinem Ausscheiden aus dem Amt helfen wollte.)

function wpse214084_max_post_queries( $query ) {

   if(is_tax('genre')){ // change genre into your taxonomy or leave out for all
     // show 20 posts
     $query->set('posts_per_page', 20);
   }
}
add_action( 'pre_get_posts', 'wpse214084_max_post_queries' );

Zu Ihrer Information: Vielleicht werfen Sie einen Blick auf pre_get_posts im Codex und auch auf is_tax . Was Sie wahrscheinlich suchen, ist Abfrage-Posts post_per_page .

Ich hoffe, das hilft dir weiter oder gibt dir zumindest einige Richtlinien.

1
Charles

i back @Charles answer, zusammen mit dieser anderen Problemumgehung besteht die Erstellung eines neuen Objekts der WP_Query-Klasse und die Verwendung der Schleife dieses Objekts anstelle der Standardschleife.

Vergessen Sie nicht zu verwenden

$ wp_query-> query_vars ['taxonomy_name']

um die aktuelle Taxanomie zu erhalten und in die Objektparameter von WP_Query zu laden. damit kannst du posts_per_page benutzen.

weitere Details hier

0
Vasu Chawla