2016-01-25 2 views
0

У меня есть код PHP, который я использую на веб-сайте WordPress. Вот код:Я борюсь с Wordpress и расширенными пользовательскими полями

<h3>Case Studies</h3> 

<?php 
    $the_query = new WP_Query(array(
     'post_type'   => 'post', 
     'posts_per_page' => -1, 
     'cat'    => 3, 
     'meta_key'   => 'sector', 
     'orderby'   => 'meta_value', 
     'order'    => 'ASC' 
    )); 

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

    <a href="<?php echo get_permalink(); ?>"> 
     <h1><?php the_field('client_name'); ?></h1><p><?php the_field('sector'); ?></p> 
     <span style="background-image:url(<?php $url = wp_get_attachment_url(get_post_thumbnail_id($post->ID)); echo $url; ?>)"></span> 
    </a> 

<?php endwhile; endif; ?> 

<h3>Other Clients</h3> 

<?php if(have_rows('clients')): 
    while (have_rows('clients')) : the_row(); ?> 

     <a> 
      <h1><?php the_sub_field('client'); ?></h1><p><?php the_sub_field('sector'); ?></p> 
      <span></span> 
     </a> 

<?php endwhile; endif; ?> 

Так что - в верхней части, мы получили «Case Studies», и это просто потянув некоторые детали из постов на веб-сайте (имя клиента и сектора).

Далее у меня есть «Другие клиенты» - это настроено как расширенное настраиваемое поле на странице, на которой отображается этот код. Довольно просто.

Теперь, вот самое интересное:

Это работает, если я реверс две секции («Другие клиенты» первый), но не таким образом - любые идеи, что происходит не так? Я предполагаю, что это что-то в разделе «Примеры», которое испортило следующий, но я в недоумении. Если я могу предоставить дополнительную информацию, дайте мне знать!

Большое спасибо заранее х

ответ

0

После завершения пользовательский запрос, который должен вызывать wp_reset_postdata();

$the_query = new WP_Query(array(
    'post_type'   => 'post', 
    'posts_per_page' => -1, 
    'cat'    => 3, 
    'meta_key'   => 'sector', 
    'orderby'   => 'meta_value', 
    'order'    => 'ASC' 
)); 

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

<a href="<?php echo get_permalink(); ?>"> 
    <h1><?php the_field('client_name'); ?></h1><p><?php the_field('sector'); ?></p> 
    <span style="background-image:url(<?php $url = wp_get_attachment_url(get_post_thumbnail_id($post->ID)); echo $url; ?>)"></span> 
</a> 

<?php endwhile; endif; ?> 
<?php wp_reset_postdata(); ?> 

Поскольку пользовательский запрос $the_query->the_post(); переопределяет глобальный $post объект, после окончания вашего запроса всегда должен это сделать.

+0

Вы легенда сэр! Большое спасибо, это отсортировало это. – 4lexcowley

+0

Ваш прием :) – pgk