2013-11-22 4 views
0

Я зарегистрировал пользовательский тип сообщения и ввел мой архив-myCPT.php. Я хочу получить только текущее опубликованное сообщение. Вот соответствующий отрывок из моего архива-myCPT.php:проверить текущее сообщение wordpress

if(have_posts()){ 

$x = 1; 
while (have_posts()){ 
the_post(); 
    if (0 === (int) $post->post_parent) { 
    get_template_part('inc/post-format/content-debate'); 

} 

Как я могу добавить внутри этого цикла условие для проверки текущего опубликованного поста и получать только один (самый последний один)? Это возможно ? Если да, то как я могу это сделать?

ответ

0

Мы можем непосредственно получить постфильтрацию выбора в качестве аргументов WP_Query

<?php 
// The Query 
$args=array(
'post_type'=>'custom-post-type', 
'posts_per_page'=>1, 
'post_parent'=>'parent-page-id', 
'order'=>'DESC' 
); 
$the_query = new WP_Query($args); 
if ($the_query->have_posts()) { 
while ($the_query->have_posts()) { 
    $the_query->the_post();?> 

/*title*/ <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
/*image*/ <?php the_post_thumbnail(); ?> 

<?php }} 

wp_reset_postdata();?> 

Таким образом, не будет никакой необходимости фильтровать внутри цикла. Надеюсь, это поможет.

1

В цикле вы получаете только опубликованные сообщения, поэтому это не ваша забота.

Если вы хотите самый последний опубликованный пост, добавлять до if(have_posts()) функции query_posts('posts_per_page=1&order=DESC&orderby=date&post_type=my_custom_post_type')

Via query_posts вы можете легко изменить свой цикл.

РЕДАКТИРОВАТЬ:

Чтобы получить конкретно один пост, а не использование get_posts цикла.

$posts = get_posts('posts_per_page=1&post_type=my_custom_post_type'); 

//do not use reserved variable name $post 
foreach($posts as $single_post) setup_postdata($single_post); 
    //you can use the_title(), the_content()... 
+0

Если я использую это, вы получите только последнее опубликованное сообщение? – agis

+0

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

+1

, чтобы получить CPT, добавить в аргумент query_posts '& post_type = my_custom_post_type'. Я не уверен на сто процентов, можете ли вы отключить показ ссылок на страницы при использовании цикла (кроме удаления кода страницы), вы можете попробовать '& paged = 0' или' & paged = 1'. Во что бы то ни стало, проверьте мое редактирование, я люблю другое решение, которое может быть находчивым для вас в этой ситуации. –

Смежные вопросы