具有动态数组的GET_POST的POST__IN

时间:2016-05-24 作者:Jolo

我正在创建RSS提要。我在数据库中创建了一个具有400个帖子id的表。我对rss提要进行了编码,现在我正在尝试将两者链接起来,以便我的rss提要只针对我表中的400个帖子列表运行。

在我的RSS提要页面上,我可以使用几个id创建一个数组(见下文)

$myarray2 = array(12345,12346);
$args = array(
\'post_type\' => \'posttype\',
\'post__in\' => $myarray2
);
这可以为id的1234512346创建RSS提要。

我还可以在页面上打印400条数据库表记录的数组,如下所示;

$myarray = $wpdb->get_results("SELECT * FROM my_table");
print_r($myarray)
这将生成此表单的数据

( 
        [0] => stdClass Object ( 
                [id] => 145 
            ) 
        [1] => stdClass Object ( 
                [id] => 4573 
            ) 
        [2] => continues.....
)
然而,我似乎无法正确使用代码$myarray 具有post__in 例如

$myarray = $wpdb->get_results("SELECT * FROM my_table");
$args = array(
\'post_type\' => \'posttype\',
\'post__in\' => $myarray
);
不起作用。我尝试了各种变体,但我缺少一些关于如何将帖子id列表从我的数组传递到post__in

我错过了什么?

3 个回复
SO网友:Sumit

post__in 接受post ID数组,例如。array(5, 4, 8, 9);

扩展@bravokeyl注释。默认情况下,结果为Object。正如codex建议的那样,您可以更改get_results() 这些值。

对象-结果将作为行对象的数字索引数组输出

  • OBJECT_K-结果将作为行对象的关联数组输出,使用第一列的值作为键(重复项将被丢弃)ARRAY_A 然后提取帖子ID并传递给post__in

    global $wpdb;
    $fivesdrafts = $wpdb->get_results("SELECT ID FROM my_table", ARRAY_A);
    $post_ids = array_map(function($single_array){
        return $single_array[\'ID\'];
    }, $fivesdrafts);
    
    //Pass this to post__in
    array(
        \'post__in\' => $post_ids
    );
    

  • SO网友:birgire

    这里有一种方法wpdb::get_col() 然后取下id 列:

    $pids = $wpdb->get_col( "SELECT id FROM my_table" );
    
    然后,我们可以通过整数将每个id转换为:

    $pids = wp_parse_id_list( $pids );
    
    Just note 不同的最大值intval(), 取决于32位或64位系统。

    SO网友:Jolo

    好的,我让它工作如下。

    global $wpdb;
    $jlk = $wpdb->get_results("SELECT * FROM my_table");
    
    foreach($jlk as $custompost) {
     $custompost_ids[] = $custompost->ID;
    }
    
    $args = array(
    \'post_type\' => \'custompost\',
    \'numberposts\' => -1,
    \'post__in\'=> $custompost_ids
    );
    $result = get_posts($args);
    

    相关推荐

    如何使用GET_POSTS根据单个帖子ID进行过滤?

    如何使用get\\u posts根据单个post id进行筛选?(我不想使用get\\u post,因为我在另一个函数中使用它,该函数可能会使用其他参数,并且应该返回一个数组)。以下方法不起作用:get_posts(array( \'ID\' => 12345, )); get_posts(array( \'p\' => 12345, )); get_posts(array( \'post\'