如何将自定义POST ID列表放入可用于另一个函数的变量中?

时间:2014-10-09 作者:AsteriskMMT

如何将相同的输出输入到一个变量中,然后在另一个函数中使用?

//get all the post ids of current projects
$qry_args = array(
        \'post_status\' => \'publish\', // optional
        \'post_type\' => \'project\', // 
        \'posts_per_page\' => -1, // ALL posts
        \'fields\' => \'ids\',
        );

    $all_posts = new WP_Query( $qry_args );
    foreach((array) $all_posts->posts as $id) {
        echo $id .\',\';
    }
上面的代码可以很好地创建ID的“数组”,但我需要能够将其放入变量中,这样我就可以在其他函数中使用它,如:

echo do_shortcode(\'[mla_gallery post_parent=\'.  $ARRAYOFid .\' posts_per_page=12]\'); 
我知道我错过了一些简单的事情。。。

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您可以从foreach 循环到foreach 循环,如下所示(请注意,这不是首选方法,因为有一种更简单的方法,只需向下滚动即可)

$post_ids = [];
foreach((array) $all_posts->posts as $id) {
   $post_ids[] = $id;
}
?><pre><?php var_dump($post_ids); ?></pre><?php 
$post_ids 将保存您的id数组

或者,在这里,哪种方法实际上是更好的首选方法,$all_posts->posts 已经保存了一个post id数组,只需将其分配给一个变量

$post_ids = $all_posts->posts; 
?><pre><?php var_dump($post_ids ); ?></pre><?php    

EDIT

如果你需要一串id,你可以直接内爆$post_ids

$string_ids = implode( \',\', $post_ids );

SO网友:AsteriskMMT

多亏了@Pieter Goosen的提示,我才能够完成这项工作。为了防止其他人关注或将来参考,我进一步使用了这段代码,所以现在我正在自定义分类法中按类别为所有相关帖子创建一个缩略图ID数组。然后,我将此数组传递给mla\\U gallery短代码,以动态调用具有链接到父页面的缩略图的相关项目列表。演示:http://ecominded.wpengine.com/landscape-design-construction/landscape-construction/

//get all the post ids of current projects

  $post = get_post( $post->ID );//get current post
   // get the terms related to post
   $args = array(\'orderby\' => \'date\', \'order\' => \'ASC\', \'fields\' => \'slugs\');
    $terms = wp_get_object_terms( $post->ID, \'project_category\' , $args);

$qry_args = array(
        \'post_status\' => \'publish\', // optional
        \'post_type\' => \'project\', // Change to match your post_type
        \'tax_query\' => array(
            array(
                    \'taxonomy\' => \'project_category\',
                    \'field\'    => \'slug\',
                    \'terms\'    => $terms,
                ),
            ),  
        \'posts_per_page\' => 12, // # of posts
        \'fields\' => \'ids\',
        );

    $all_posts = new WP_Query( $qry_args );
    $post_thumbnail_ids = array();//initialize array

    foreach((array) $all_posts->posts as $id) {
        $post_thumbnail_ids[] = get_post_thumbnail_id( $id );
    }

    $string_ids = implode( \',\', $post_thumbnail_ids );//convert to string for shortcode


echo do_shortcode(\'[mla_gallery post_parent=any posts_per_page=12 ids=\'.  $string_ids .\' ]\'); 

echo do_shortcode(\'[mla_gallery  post_parent=any posts_per_page=12 ids=\'.  $string_ids .\'  mla_output=paginate_links]\');

结束

相关推荐

用于添加自定义重写规则的‘REWRITE_RULES_ARRAY’或‘GENERATE_REWRITE_RULES’?

有什么理由我应该使用rewrite_rules_array 而不是generate_rewrite_rules?generate_rewrite_rules 开箱即用,但我无法rewrite_rules_array 工作。我被告知[添加自定义重写规则时]的任何数组操作都应该通过rewrite_rules_array 以及其他*_rewrite_rule 过滤器(例如。add_rewrite_rule). 原因不明。