запросить один пост с помощью wp_query

Я получил последние сообщения на главной странице с помощью цикла WP_query, потому что понял, что это лучшее решение. но я хочу, чтобы сообщение было нажато на главной странице.

какой лучший метод для одиночного почтового запроса?

Я снова использовал wp_query в single.php (есть ли идея получше?)

$args =  array('name' => $the_slug,
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 1);
$the_query = new WP_Query( $args );
<?php while ( $the_query->have_posts() ) :?>

    <?php $the_query->the_post(); ?>
<p><?php $content = get_the_content('Read more');
print $content; ?></p>
<?php endwhile; ?><!-- end of the loop -->
<!-- put pagination functions here -->
    <?php wp_reset_postdata(); ?>
<?php else:  ?>

<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>

<?php endif; ?>

проблема в том, что он всегда извлекает последнее сообщение, даже если я нажимаю на любой идентификатор сообщения. как я могу решить эту проблему?


person Miller    schedule 01.09.2014    source источник


Ответы (3)


Не запускайте пользовательский запрос вместо основного цикла. Вы можете просто сделать следующее, это быстрее, надежнее и правильнее.

<?php
            // Start the Loop.
    while ( have_posts() ) : the_post(); 

        // YOUR LOOP ELEMENTS

    endwhile;
?>

ИЗМЕНИТЬ

Приведенный выше код называется циклом, если быть точным, циклом по умолчанию. Это не запрос. Что делает этот цикл, он возвращает только информацию, полученную основным запросом. Основной запрос выполняется на каждой загружаемой странице. Основной запрос специфичен для каждой страницы

Для получения дополнительной информации прочитайте мой пост на WPSE по этому вопросу.

person Pieter Goosen    schedule 01.09.2014
comment
спасибо, что за запрос? он использует wp_query или query_post? и я хочу показать только последние 5 последних сообщений на главной странице и использовать для этого разбиение на страницы. как я могу изменить это свойство? - person Miller; 01.09.2014
comment
Пожалуйста, смотрите мое обновление. Также ознакомьтесь с темами в комплекте и посмотрите, как они структурированы. - person Pieter Goosen; 01.09.2014
comment
Рад, что помог :-) Наслаждайтесь - person Pieter Goosen; 01.09.2014

Я нашел решение.

создайте эту переменную $id= get_the_ID();

и добавьте 'p'=>$id to $args.

person Miller    schedule 01.09.2014

$my_query = new WP_Query( array(
  'post_type' => 'your_post_type_here',
  'p' => '$id'));// need to set the simple quote '$id'

if( $my_query->have_posts() ){
    // start the loop
}else{
    // no result message
}

не забудьте добавить простую кавычку к «$ id», потому что я пробовал без нее, и в моем случае это не сработало. надеюсь, что это поможет кому-то в будущем!

person Keusta    schedule 30.04.2020