Wordpress Meta Box覆盖页面S ..

时间:2013-12-18 22:37:13

标签: php wordpress

我遇到了Wordpress 3.8的一个奇怪的错误。

我正在做的是在侧面创建一个多选自定义帖子类型的元框。这很有效,因为我可以选择多种类型,保存帖子,并在页面上显示多个项目(在这种情况下,调用操作)。

奇怪的是,当我在Wordpress中更新页面时,页面的slug(永久链接)成为$ ctas查询中 last 号召性用语的标题。

这里有什么东西?它发生在if ($ctas->have_posts()区块。

// Disply the selection of CTAs in a meta box
function xxxxx_calloutContent($post) {
    // Get all the callouts
    $args = array('post_type' => 'callout', 'posts_per_page' => '100');
    $ctas = new WP_Query($args);
    $assignedCallouts = explode(',',get_post_meta($post->ID, 'callouts', true));
    // Create the meta box form
    wp_nonce_field('xxxxxCallout', 'xxxxxCalloutForm' );
    if (count($assignedCallouts) > 3) {
        xxxxx_ctaErrorMessage('Only three CTAs are allowed. Please choose three.');
        add_action('admin_notices', 'xxxxx_ctaErrorMessage');
    }
    echo '<label for="calloutSelect">Choose your CTAs</label><br>';
    echo '<select id="xxxxxCTASelect" name="xxxxxCTASelect[]" multiple="multiple">';
    if($ctas->have_posts()) {
        while($ctas->have_posts()) {
            $ctas->the_post();
            if (in_array(get_the_ID(), $assignedCallouts)) {
                echo '<option selected="selected" value="'.get_the_ID().'">'.get_the_title().'</option>';   
            } else {
                echo '<option value="'.get_the_ID().'">'.get_the_title().'</option>';
            }
        }
    } else {
        echo '<option value="" disabled="disabled">No Callouts</option>';
    }
    echo '</select>';
    wp_reset_postdata();
}

1 个答案:

答案 0 :(得分:0)

在管理员中使用WP_Query是不安全的,它与当前的$post严重混淆。切换到get_posts(),一切都应该按预期工作。