通过wp_INSERT_POST插入的Meta出现混乱

时间:2019-03-15 作者:Gonçalo Figueiredo

我正在扩展Woocommerce产品CSV导入功能以导入更多数据。

我插入了一个包含2个元数据、一个字符串(URL)和一个bool的CPT,插入的post\\u meta被弄乱了。它为应该有布尔值的元插入一个数组。

代码快照:

$link = array(
    \'url\'       => $url         // string
    \'caption\'   => $caption     // string
    \'hide\'      => $hide            // bol

$meta_input  = array(
    \'ct_external_link_url\'  => $link[\'url\']
);

if( isset($link[\'hide\']) ) {
    $meta_input += [\'ct_hide_from_frontent\' => $link[\'hide\']];
}

$postarr = array(
    \'post_title\'    => $link[\'caption\'],
    \'post_type\'     => \'ct_external_link\',
    \'post_status\'   => \'publish\',
    \'post_excerpt\'  => $link[\'caption\'],
    \'meta_input\'    => $meta_input
);

write_log("Args to insert external link post:");     // write_log ouputs to debug.txt
write_log($postarr);

$external_link_id = wp_insert_post($postarr);

$external_link = get_post($external_link_id, \'ARRAY_A\');

if( !is_null($external_link)) {

    write_log("External link post:");
    write_log($external_link);

    write_log("External link post meta:");
    $meta = get_post_meta($external_link_id);
    write_log($meta);
}
由于我在写日志,这些日志如下所示:

[15-Mar-2019 10:33:45 UTC] Args to insert external link post:
[15-Mar-2019 10:33:45 UTC] Array
(
    [post_title] => Vídeo 1
    [post_type] => ct_external_link
    [post_status] => publish
    [post_excerpt] => Vídeo 1
    [meta_input] => Array
        (
            [ct_external_link_url] => https://www.youtube.com/watch?v=F0IbjVq-fgs&ab_channel=CollegeMusic
            [ct_hide_from_frontent] => 1
        )

)
[15-Mar-2019 10:33:45 UTC] External link post meta:
[15-Mar-2019 10:33:45 UTC] Array
(
    [ct_hide_from_frontent] => Array
        (
            [0] => 1
        )

)
请注意,虽然键“ct\\u hide\\u from\\u front”的值是meta\\u输入中的布尔值,但它是作为数组从post\\u meta输出的。为什么?

谢谢

1 个回复
SO网友:Gonçalo Figueiredo

所以我最后只是在插入帖子后添加了meta,这不会给出任何错误。它绕过了问题,但没有解释它。。。

$postarr = array(
    \'post_title\'    => $link[\'caption\'],
    \'post_type\'     => \'ct_external_link\',
    \'post_status\'   => \'publish\',
    \'post_excerpt\'  => $link[\'caption\'],
);

$external_link_id = wp_insert_post($postarr);

if( !empty($external_link_id) ) {
    add_post_meta($external_link_id, \'ct_external_link_url\', $doc[\'file\'], true);

    if( isset($doc[\'hide\']) ) {
        add_post_meta($external_link_id, \'ct_hide_from_frontent\', $doc[\'hide\']);
    }
}

相关推荐

如何在重定向wp-login.php的同时仍允许注销和其他操作?

我的目标:重定向前往wp登录的访问者。php(或尝试注册的用户)访问主页。但仍允许wp登录。php在注销、丢失密码和重置密码等特定操作期间运行。我们在另一个问题中使用了代码,使我们几乎达到了目标。(How to use wp-login.php page only for logout?) 我们的修改添加了lostpassword和密码重置操作。这就是我们现在所拥有的:// Allow logout and lost password actions but redirect to the home pa