wp_reset_postdata查杀变量数据

时间:2014-01-06 14:29:03

标签: php wordpress

我在Wordpress中为自定义帖子类型创建了一个存档页面。如果某些字段匹配,我想输出数据。

在第一个if语句中,我想查看用户已注册的产品(在$product内保留,并将其与当前项目自定义字段(在$title内保存)匹配。

它正在做的就是查看用户注册的内容然后输出内容(这是<?php if($match == "yes"){ ?>下面的所有数据。

我遇到的问题是wp_reset_postdata()正在查杀$match内的数据。有没有解决的办法?如果我不包括设置发布数据并且不包括重置,则页面的其余部分不会显示正确的信息。

我正在使用高级自定义字段关系字段(http://www.advancedcustomfields.com/resources/field-types/relationship/)。

非常感谢任何帮助。

User signed up as: <?php $current_user = wp_get_current_user();
$board = $current_user->work;
$product = $current_user->product;
echo $product; ?>
<br />

<?php while (have_posts()) : the_post(); ?>

<?php $products = get_field('product'); 
if( $products ):
    foreach( $products as $post): // variable must be called $post (IMPORTANT)
        setup_postdata($post);          
        $title = $post->post_title;
        echo $title;
        if($product == $title) {
            $match = "yes";
        }
    endforeach;
    wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly
endif; ?>   

<?php if($match == "yes"){ ?>
<div id="module-area" style="margin-top:0px!IMPORTANT;">
    <div id="modules-top"></div>
    <div id="modules-repeat" style="position:relative;padding-left:10px;padding-right:10px;width:625px!IMPORTANT;">
        <div class="topic">
            <p><?php the_title(); ?></p>
        </div>
        <div class="description">
            <p><?php the_field('description') ?></p>
        </div>
        <div class="date">
            <p style="text-align:center!IMPORTANT;"><?php the_modified_time('d.m.y'); ?></p>
        </div>
        <div class="action">
            <a class="train-button" href="<?php echo the_permalink(); ?>"></a>                      
        </div>
        <div class="clear"></div>
    </div>
    <div style="margin-bottom:5px;" id="modules-bottom"></div>              
</div>  
<?php } ?>

<?php endwhile; ?>

1 个答案:

答案 0 :(得分:1)

User signed up as: <?php $current_user = wp_get_current_user();
$board = $current_user->work;
$product = $current_user->product;
?>
<?php $products = get_field('product'); 
if( $products ):
    foreach( $products as $post): // variable must be called $post (IMPORTANT)
        setup_postdata($post);          
        $title = $post->post_title;
        if($product == $title) { 
                       wp_reset_postdata(); ?>
        <div id="module-area" style="margin-top:0px!IMPORTANT;">
            <div id="modules-top"></div>
            <div id="modules-repeat" style="position:relative;padding-left:10px;padding-right:10px;width:625px!IMPORTANT;">
                <div class="topic">
                    <p><?php the_title(); ?></p>
                </div>
                <div class="description">
                    <p><?php the_field('description') ?></p>
                </div>
                <div class="date">
                    <p style="text-align:center!IMPORTANT;"><?php the_modified_time('d.m.y'); ?></p>
                </div>
                <div class="action">
                    <a class="train-button" href="<?php echo the_permalink(); ?>"></a>                      
                </div>
                <div class="clear"></div>
            </div>
            <div style="margin-bottom:5px;" id="modules-bottom"></div>              
        </div>  
<?php           
        }
    endforeach;
endif; ?>   
wp_reset_postdata();