查询自定义帖子-添加到选定内容

时间:2013-09-04 作者:Howdy_McGee

我有工作,但不正确。当我将这个元框添加到我的页面时,总是显示某个组织帖子类型的slug,这会弄乱永久链接。当我删除此元框时,帖子的名称正确(正如标题所示)。是否有其他或更好的方法来查询循环外的帖子?

我要做的是查询我的帖子类型中的所有组织,并将它们显示在选择列表中,供用户选择。

这似乎把我的永久链接搞砸了。

function show_custom_meta_box_org() {
    global $post; 
    $org = new WP_Query( array( \'post_type\' => \'organizations\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\' ) );

    // Use nonce for verification
    echo \'<input type="hidden" name="orglist_meta_box_nonce" value="\'.wp_create_nonce(basename(__FILE__)).\'" />\';

    // get value of this field if it exists for this post
    $meta = get_post_meta($post->ID, \'_orglist\', true);

    ?>
    <table class="form-table" id="orgList">
        <tr>
            <td>
                <select id="selectorg" name="_orglist">
                    <option value="">Select Organization</option>
                <?php while($org->have_posts()) : $org->the_post(); ?>
                    <option value="<?php echo $post->post_name; ?>"><?php the_title(); ?></option>
                <?php endwhile; ?>
                </select>
            </td>
        </tr>
    </table>
    <?php
}

1 个回复
最合适的回答,由SO网友:Anjum 整理而成

使用wp_reset_postdata(); 使用新的WP\\U查询在辅助查询循环之后还原主查询循环的全局$post变量。它将$post变量还原为主查询中的当前post。

呼叫wp_reset_postdata(); 之后endwhile;

<?php while($org->have_posts()) : $org->the_post(); ?>
     <option value="<?php echo $post->post_name; ?>"><?php the_title(); ?></option>
<?php endwhile;
// reset main query
wp_reset_postdata(); ?>

结束