WP Query Code для отображения уникальных классов div и функций WP - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь добавить код WP Query, в котором будут перечислены все сообщения в моем блоге WordPress.

Этот код будет в пользовательском шаблоне под моей созданной страницей в моем блоге WordPress.

Цель этого кода запроса wp - отобразить все сообщения в уникальных классах div и иметь другую структуру html / php.Например, сообщение № 1 будет отображать заголовок и выдержку, а сообщение № 2 будет отображать заголовок и содержание и т. Д.

Ниже приведен вышеупомянутый код:

<?php /*** Template Name: Custom Page - Blog */ get_header(); ?>

<!-- START of WP Query -->

<?php $the_query = new WP_Query( array("post_type"=>'post')); ?>

<?php if ( $the_query->have_posts() ) : ?>

<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>

<?php $count++; ?>

<?php if ($count == 1) : ?>
<div class="item1">
    <span>Post 1 </span><?php the_title(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 2) : ?>      
<div class="item2">
<span>Post 2 </span><?php the_title(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 3) : ?>      
<div class="item3">
    <span>Post 3 </span><?php the_title(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 4) : ?>      
<div class="item4">
    <span>Post 4 </span><?php the_title(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 5) : ?>      
<div class="item5">
    <span>Post 5</span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count <= 7) : ?>      
<div class="item6">
    <span>Post 6 to 7 </span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count >= 8 && $count <= 16) : ?>      
<div class="item6">
    <span>Post 8 to 15 </span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count >= 17) : ?>      
<div class="item6">
    <span>Post 16 onwards - </span><?php the_title(); ?><?php the_excerpt(); ?>
</div><!-- .item# -->


    <?php
    global $wp_query;

        $big = 999999999; // need an unlikely integer

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


<?php else : ?>

<?php endif; ?>
<?php endwhile; ?>
<?php else : ?>
<p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

<!-- END of WP Query -->

Проблема с кодом выше заключается в неправильном отображении того, что я хочу.Он отображает сообщения с 1 по 5, но после этого он не соответствует условиям $count >= 5 || $count <= 7, $count >= 8 || $count <= 15, $count >= 8 || $count <= 15 и $count >= 16.

Также не работает код нумерованной нумерации страниц.Ничего не отображается:

<?php
global $wp_query;

    $big = 999999999; // need an unlikely integer

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

Кроме того, вот ссылка моей веб-страницы, чтобы вы могли видеть, что происходит, когда код реализован.

любые идеи?любая помощь, которую вы можете предложить, очень ценится.Большое спасибо!

1 Ответ

1 голос
/ 08 марта 2019

Вы должны просмотреть Логические операторы PHP . || оператор в состоянии elseif ($count >= 5 || $count <= 7) вытянет что-нибудь> = 5 ИЛИ что-нибудь <= 7, что является любым и всеми числами. То же самое относится к следующему условию с 8 и 15, поэтому следующее решение должно решить вашу проблему: </p>

Пост 1

<?php elseif ($count == 2) : ?>      
<div class="item2">
<span>Post 2</span><?php the_title(); ?><?php the_content(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 3) : ?>      
<div class="item3">
    <span>Post 3</span><?php the_title(); ?><?php the_author(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 4) : ?>      
<div class="item4">
    <span>Post 4</span><?php the_title(); ?><?php the_title(); ?>
</div><!-- .item# --> 

<?php elseif ($count == 5) : ?>      
<div class="item5">
    <span>Post 5</span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count >= 5 && $count <= 7) : ?>      
<div class="item6">
    <span>Post 6 to 7</span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count >= 8 && $count <= 15) : ?>      
<div class="item6">
    <span>Post 8 onwards - </span><?php the_title(); ?><?php the_excerpt(); ?>
</div><!-- .item# -->

<?php elseif ($count >= 16) : ?>      
<div class="item6">
    <span>Post 8 onwards - </span><?php the_title(); ?><?php the_excerpt(); ?>
</div><!-- .item# -->

Примечание: Лучшее решение состоит в том, чтобы пропустить вторую часть этих сравнений, потому что мы уже знаем, что это> = 5 для первого и> = 8 для второго. Самое простое, чистое решение выглядит так:

...

<?php elseif ($count <= 7) : ?>      
<div class="item6">
    <span>Post 6 to 7</span><?php the_title(); ?>
</div><!-- .item# -->

<?php elseif ($count <= 15) : ?>      
<div class="item6">
    <span>Post 8 onwards - </span><?php the_title(); ?><?php the_excerpt(); ?>
</div><!-- .item# -->

...



EDIT Вопрос изменился, и приведенный выше код может иметь какое-то значение, поэтому я сохраняю его, но последние два условия должны выглядеть следующим образом:

Из предыдущих условий мы уже знаем, что $ count равен> = 8, поэтому удаление этой части второго по порядку условия будет работать нормально:

<?php elseif ($count <= 16) : ?>      
<div class="item6">
    <span>Post 8 to 16 </span><?php the_title(); ?>
</div><!-- .item# -->

Из предыдущих условий мы уже знаем, что все остальные значения для $ count будут> = 17, поэтому простое 'else' будет работать нормально:

<?php else : ?>      
<div class="item6">
    <span>Post 16 onwards - </span><?php the_title(); ?><?php the_excerpt(); ?>
</div><!-- .item# -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...