我正在努力使用Wordpress和高级自定义字段

时间:2016-01-25 15:32:11

标签: php wordpress repeater advanced-custom-fields

我有一些我在WordPress网站上使用的PHP代码。这是代码:

<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; ?>

所以 - 在顶部,我们有“案例研究”,这只是从网站上的帖子(客户名称和部门)中提取一些细节。

接下来,我有“其他客户端” - 这是在此代码显示的页面上设置为高级自定义字段。也很简单。

现在,这里很有趣:

如果我颠倒这两个部分(首先是“其他客户”)但不是这样的话,它是有效的 - 任何想法出了什么问题?我认为这是“案例研究”部分中的一些东西搞乱了下面一个,但我不知所措。如果我可以提供更多信息,请告诉我们!

非常感谢提前x

1 个答案:

答案 0 :(得分: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对象,因此在完成查询后必须始终执行此操作。