帖子2帖子插件循环回应_标题不起作用

时间:2012-11-19 作者:Tiffany Israel

我有一个基本的工作循环(我正在做的一个粗略的例子),我想向客户展示我所做的工作。有些工作连接了客户端,有些没有。DOA有一个或多个客户端与其关联的工作会回显客户端段落,并为每个连接客户端回显一次,因此它会识别连接。但它没有呼应标题,我似乎也不明白为什么。

这直接来自github的两篇文章:https://github.com/scribu/wp-posts-to-posts/wiki/each_connected

<?php
$my_query = new WP_Query( array(
    \'post_type\' => \'work\'
) );

p2p_type( \'work_for_client\' )->each_connected( $my_query, array(), \'clients\' );


while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

    <?php the_title(); ?>

    <?php
    // Display connected clients


    foreach ( $post->clients as $post ) : setup_postdata( $post );
        echo \'<p>clients:</p>\';
        echo the_title();

    endforeach;

    wp_reset_postdata();

    ?>

1 个回复
SO网友:chrisguitarguy

你的代码在哪里?在函数中?模板中的某个地方?

setup_postdata 不替换全局$post 使用$post 传入的对象。然而,它确实修改了其他一些全局变量。

所以如果你想使用the_* 模板标记,需要显式替换全局$post 它们所依赖的对象。

例如,在函数中。。。

<?php
function wpse73103_loop_example()
{
    global $post; // this is important!

    $posts = new WP_Query(/* your args here */);

    // because $post is global above, this will
    // overwrite the global object.
    foreach($posts as $post)
    {
        setup_postdata($post);
        // do stuff
    }

    wp_reset_postdata(); // back to normal
}
无论如何,这个故事的寓意是你应该试着global $post; 在您发布的任何代码之前(这非常正确)。

结束