WordPress返回数组,其帖子ID基于meta_value

时间:2016-11-29 15:37:10

标签: php wordpress advanced-custom-fields

我想弄清楚我认为应该相当容易的事情。我有名为'include-in-nav'的自定义字段。我正在使用wp_nav_menu()来创建菜单:

wp_nav_menu( array(     'theme_location' => 'primary', 
                        'menu_id' => 'primary-menu',
                        'include' => $post_ids

                ) 
        ); 

我试图获得一个带有帖子ID的数组,基于更好的'包含在导航'是真的与否。我已经尝试了get_posts()和WP_query(),但无论我在尝试什么,似乎都没有返回带有帖子ID的数组。有什么建议吗?

- 编辑获取$ post_ids的尝试:

$post_ids = get_posts(array(
        'post'
        'meta_value'    => 'include-in-main-nav'
));

$nav_posts = array(
        'meta_value'    => 'include-in-main-nav'
));

$wp_query = new WP_Query($nav_posts);

$post_ids = array();

while ( $wp_query->have_posts() ) : $wp_query->the_post();
   $post_ids[] = get_the_ID() ;
endwhile;

1 个答案:

答案 0 :(得分:0)

除了我们的sql查询之外,还有其他问题。

你可以将wp_query与嵌套的元查询一起使用。这将返回帖子。你需要像往常那样循环浏览帖子

您需要的查询示例:

$args = array(
'post_type'  => 'page',
'meta_key'   => 'include-in-main-nav',
'meta_query' => array(
    array(
        'key'     => 'include-in-main-nav',
        'value'   => 1,
        'compare' => '=',
    ),
),
);
 $query = new WP_Query( $args );


if ( $query->have_posts() ) : ?>
    <?php while ( $query->have_posts() ) : $query->the_post(); ?>    
        <!-- MOO! time to display your menu items! -->
    <?php endwhile; ?>
<?php endif; ?>

注意:从那里你也可以用你的id填充一个数组..如果你真的需要一个只包含你的id的数组。

玩得开心!希望这可以帮助你m8!