两个不同的get_posts()返回相同的帖子

时间:2015-07-16 12:39:21

标签: php wordpress custom-post-type advanced-custom-fields

我正在使用Wordpress并尝试创建一些框,从自定义帖子类型的Adanvec海关领域检索信息。

我有这段代码:

<div class="col-sm-2 hidden-xs">
    <?php
    $box1 = get_front_page_box("Box 1");
    $style_front = get_box_style($box1->ID, "front");
    echo $box1->ID;
    ?>
    <div id="front-box-1" class="front-box height-low <?php echo $box1->ID; if(has_back_panel($box1->ID)) echo "flip"; ?>">
        <div class="front" style="<?php echo $style_front; ?>"><a href="#">Banana</a></div>
        <?php
        if(has_back_panel($box1->ID)):
            $style_back = get_box_style($box1->ID, "back");
        ?>
        <div class="back" style="<?php echo $style_back; ?>"></div>
        <?php endif; ?>
    </div>
</div>
<div class="col-sm-5 hidden-xs">
    <?php
    $box2 = get_front_page_box("Box 2");
    $style_front = get_box_style($box2->ID, "front");
    echo $box2->ID;
    ?>
    <div id="front-box-2" class="front-box height-low <?php echo $box2->ID; if(has_back_panel($box2->ID)) echo "flip"; ?>">
        <div class="front" style="<?php echo $style_front; ?>"><a href="#">Banana</a></div>
        <?php
        if(has_back_panel($box2->ID)):
            $style_back = get_box_style($box2->ID, "back");
        ?>
        <div class="back" style="<?php echo $style_back; ?>"></div>
        <?php endif; ?>
    </div>
</div>

这些功能:

function get_front_page_box($name) {
    $args = array(
        'post_title'   => $name,
        'post_type'    => 'front-page-box',
        'post_status'  => 'publish'
    );

    $box_array = get_posts($args);

    $box = $box_array ? $box_array[0] : false;

    print_array($box);
    return $box;
}

function get_box_style($id, $side) {
    $style = "";
    if(get_field($side."_panel_background_color", $id)) $style = "background-color:".get_field($side."_panel_background_color", $id).";";

    return $style;
}   

但由于某种原因,两个盒子都有相同的细节(均来自方框2)。 知道为什么这些返回相同的信息?这两个帖子(&#34; Box 1&#34;和#34; Box 2&#34;存在于front-page-box自定义帖子类型下。

3 个答案:

答案 0 :(得分:1)

似乎post_title不是有效的过滤器。 但发现那里有一个特定的功能来获得标题的帖子。

get_page_by_title

已使用$box1 = get_page_by_title("Box 1", NULL, "front-page-box");

答案 1 :(得分:0)

只是为了检查,如果您添加另一个名为&#34; Box 3&#34;的框,则所有框都有来自&#34;框2和#34;的结果。或&#34;方框3&#34; ?

答案 2 :(得分:0)

更好的方法是使用帖子ID作为get_front_page_box()中的参数。