wake-up-neo.com

Wenden Sie für jedes Element in foreach () eine andere Klasse an.

entschuldigung für die dumme Frage, aber ich bin wirklich verloren. Ich möchte das folgende CSS auf die geraden Elemente meines foreach anwenden.

CSS

.blogArticles a {
    float: left;
    max-width: 250px;
    width: 25%;
    color: #333;
}

.blogArticles a:nth-child(even) {
    margin: 30px 0 -30px 0;
}

PHP AKTUALISIERT (Ich habe snap.svg zum Rendern der SVG verwendet)

<section id="blogArticles" class="blogArticles clearfix">

    <?php

        $page = (isset($_GET['paged'])) ? $_GET['paged'] : 1;

        $args = array(
                    'paged'          => $paged,
                    'orderby' => 'id',
                    'order' => 'DESC',
                    'cat' => 50,
                    'posts_per_page'    => 20,
                    'post_status'      => 'publish',
                    'suppress_filters' => true
                    );                      

        $blogPosts = query_posts( $args );

        if ( have_posts() ) : while ( have_posts() ) : the_post();

        $categories = get_the_category();

        $count = 0;
        if ($categories) {
            foreach($categories as $category) {
                $class = ($count%2 == 0) ? "even" : "";
    ?>

                <a href="#" class="mix <?php echo $category->name; ?> <?php echo $class; ?>" target="_self" onclick="return false;" data-path-hover="m 0,0 0,100 c 24.580441,3.12569 55.897012,-8.199417 90,-8.199417 34.10299,0 65.41956,11.325107 90,8.199417 L 180,0 z">
                    <figure>
                        <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?>      
                                <?php the_post_thumbnail(); // Fullsize image for the single post ?>
                        <?php endif; ?>
                        <svg viewBox="0 0 180 320" preserveAspectRatio="none"><path d="m 0,0 0,171.14385 c 24.580441,15.47138 55.897012,24.75772 90,24.75772 34.10299,0 65.41956,-9.28634 90,-24.75772 L 180,0 0,0 z"/></svg>
                        <figcaption>
                            <h2><?php the_title(); ?></h2>
                            <p class="label <?php echo $category->name; ?>"><?php echo $category->name; ?></p>
                            <button>View</button>
                        </figcaption>
                    </figure>
                </a>

        <?php 
                $count++;
            } 
        } 
        ?>

    <?php endwhile; ?>

</section>

<div id="pagination">
    <?php html5wp_pagination(); ?>
</div>

function.php

function html5wp_pagination()
{
    global $wp_query;
    $big = 999999999;
    echo paginate_links(array(
        'base' => str_replace($big, '%#%', get_pagenum_link($big)),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'total' => $wp_query->max_num_pages
    ));
}

Das Problem ist, dass in der foreach jeder gedruckte $class gerade ist! Irgendein Hinweis, wo es mein Fehler ist? Danke im Voraus!


Wenn Sie, wie ich, Probleme mit der Anzeige der vorgeschlagenen großen Paginierungsfunktion haben, ist hier der Code für die Paginierung von @Pieter Goosen

<?php $count = 1; ?>
    <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $args = array('paged' => $paged,........);
        $blogPosts = new WP_Query( $args );

        if ( $blogPosts->have_posts() ) : ....... while ( $blogPosts->have_posts() ) : $blogPosts->the_post();
            ........
            ........
            ........
        } 
?>
    <?php $count = $count+1; ?>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>

<div class="clear"></div>

<?php custom_pagination($blogPosts->max_num_pages); ?>
1
Mark

Erstens sollten Sie niemals query_posts verwenden, um benutzerdefinierte Abfragen zu erstellen. Dies ist nicht nur mein Schwerpunkt, sondern auch der Kodex. Das einzige große Problem bei query_posts ist, dass unter vielen Umständen die Paginierung fehlschlägt

Hinweis: Diese Funktion ist nicht für Plugins oder Themes vorgesehen. Wie später erläutert, gibt es bessere, leistungsfähigere Optionen zum Ändern der Hauptabfrage. Mit query_posts () kann die Hauptabfrage einer Seite übermäßig vereinfacht und problematisch geändert werden, indem sie durch eine neue Instanz der Abfrage ersetzt wird. Es ist ineffizient (führt SQL-Abfragen erneut aus) und schlägt unter bestimmten Umständen (besonders häufig bei Seitenumbrüchen) fehl.

Nur ein Hinweis: Ihr next_posts_link$max_pages-Parameter sollte für benutzerdefinierte Abfragen festgelegt werden, da er sonst fehlschlägt

Sie sollten immer benutzerdefinierte Abfragen mit WP_Query erstellen. Ihre benutzerdefinierte Abfrage sollte also so aussehen

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

$args = array(
    'paged'          => $paged,
    'orderby' => 'ID',
    'order' => 'DESC',
    'cat' => 50,
    'posts_per_page'    => 20,
    'post_status'      => 'publish',
    'suppress_filters' => true
);                      

$blogPosts = new WP_Query( $args );

if ( $blogPosts->have_posts() ) : while ( $blogPosts->have_posts() ) : $blogPosts->the_post();

<----YOUR LOOP---->

endwhile;

// next_posts_link() usage with max_num_pages
next_posts_link( 'Older Entries', $blogPosts->max_num_pages );
previous_posts_link( 'Newer Entries' );

wp_reset_postdata();

endif;

Zuletzt sollte Ihr Zähler außerhalb der Schleife beginnen, nicht innerhalb

if ( $blogPosts->have_posts() ) : 
    $count = 0;
    while ( $blogPosts->have_posts() ) : $blogPosts->the_post();

EDIT

Benutzerdefinierte Paginierungsfunktion. Ich weiß nicht, wer der ursprüngliche Autor dieser Funktion ist, aber ich danke Ihnen, wenn Sie jemals diese Antwort finden :-)

function custom_pagination($pages = '', $range = 2) {   
   $showitems = ($range * 2)+1;  

  global $paged;
  if(empty($paged)) $paged = 1;

      if($pages == '')
      {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
            if(!$pages)
            {
            $pages = 1;
            }
        }   

       if(1 != $pages)
      {
        $string = _x( 'Page %1$s of %2$s' , '%1$s = current page, %2$s = all pages' , 'pietergoosen' );
        echo "<div class='pagination'><span>" . sprintf( $string, $paged, $pages ) . "</span>";
          if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>" . __( '&laquo; First', 'pietergoosen' ) . "</a>";
         if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>" . __( '&lsaquo; Previous', 'pietergoosen' ) . "</a>";

            for ($i=1; $i <= $pages; $i++)
            {
               if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
               {
                    echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
               }
           }

           if ($paged < $pages && $showitems < $pages) echo "<a href='" . get_pagenum_link($paged + 1)."'>" . __( 'Next &rsaquo;', 'pietergoosen' ) . "</a>";
           if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>" . __( 'Last &raquo;', 'pietergoosen' ) . "</a>";
           echo "</div>\n";
     }
    } // 
1
Pieter Goosen

Um das Problem zu beheben, habe ich gerade den $count = 0 vor der foreach() entfernt und:

if ($categories) {
   foreach($categories as $category) {
     if(!isset($count))
        $count = 0;
0
Mark