2016-06-23 4 views
0

Извиняюсь заранее за вопрос, который для эксперта, я, без сомнения, относительно очевиден. Я просмотрел WordPress Codex для получения соответствующей информации (the_post_thumbnail, the_excerpt и т. Д.), Но я недостаточно хорошо разбираюсь в .php, но для его правильной реализации. Все еще учусь!Показать (Wordpress) Детские страницы с заголовком, миниатюр и выдержкой

Я пытаюсь отобразить на стандартной странице (WP) дочерние страницы, включая их заголовок, миниатюру и выдержку. Я могу получить все, чтобы работать бар миниатюры и ВЫПИСКУ следующий:

<div class="child-pages"> 
    <?php 
     $pageChild = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC')); 
      foreach($pageChild as $page) { 
    ?> 
     <!-- loop: child page --> 
     <div class="child"> 
      <header class="entry-header"> 
       <a href="<?php echo get_page_link($page->ID); ?>"><?php echo '<h3>'.$page->post_title.'</h3>'; ?></a> 
      </header><!-- .entry-header --> 
      <img src="<?php echo the_post_thumbnail_url($page->ID); ?>"> 
      <?php echo $page->the_excerpt; ?> 
     </div> 
    <?php } ?> 
    </div> 

До сих пор я могу видеть ссылки/название правильных детей-страницы, и в правильном порядке, но не на миниатюре или Выдержки. Очевидно, что я не называю Thumbnail или Excerpt должным образом. Может кто-нибудь, пожалуйста, поправьте меня?

Я также пробовал эти строки, а при поддержке двадцать-шестнадцати теме:

  <a href="<?php echo get_permalink(); ?>"><?php twentysixteen_post_thumbnail(); ?></a> 
      <?php the_excerpt(); ?> 

Любая помощь будет высоко ценится!

ответ

0

Миниатюра не отображается, потому что функция the_post_thumbnail_url(); показывает миниатюру текущего сообщения, параметр должен указывать размер изображения, а не сообщение.

$post->the_excerpt не обязательно заполняется. Если вы посмотрите на экран добавления/редактирования сообщений, вы увидите два текстовых поля: один для редактирования содержимого сообщения и один для выдержки. Выдержка является необязательной, поэтому функция the_excerpt() показывает содержимое этого поля, но когда она пуста, она отображает первые X символов $post->the_content.

Что касается второй попытки: функции the_excerpt(), get_permalink() и twentysixteen_post_thumbnail() не работают, потому что вы неправильно настроили сообщение.

Проще всего было бы добавить setup_postdata() к коду:

$pageChild = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC')); 
foreach($pageChild as $page) { 
    setup_postdata($page); 
    // now you can use all the fancy functions like `the_excerpt()` 
    // add your output here 
} 

Или вы можете сделать это рекомендуемый способ, с помощью WP_Query объекта:

<?php 
$args = array(
    'post_parent' => $post->ID, 
    'orderby' => 'menu_order', 
    'order' => 'ASC' 
    ); 

$the_query = new WP_Query($args); ?> 

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

    <!-- pagination here --> 

    <!-- the loop --> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     <h2><?php the_title(); ?></h2> 
    <?php endwhile; ?> 
    <!-- end of the loop --> 

    <!-- pagination here --> 

    <?php wp_reset_postdata(); ?> 

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

Спасибо Джеральд! Очень благодарен! Я выбрал «легкий» ответ, добавив строку «setup_postdata ($ page)»; затем добавляя причудливые вещи. Я обещаю, что попробовал технику WP_Query, но не смог заставить ее отображать дочерние страницы - это только привело к моему примеру в блоге. Я только что узнал о теге WP_Query, который использовал его сегодня в первый раз, чтобы идентифицировать страницы архива моих пользовательских типов сообщений и отображать их как списки в каталоге. –

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