更新WordPress自定义帖子元数据

时间:2017-02-01 09:39:20

标签: php wordpress function custom-post-type

这个问题已在这里提出过几次,但是从我研究过的无数帖子中我找不到解决方案的成功。

与我合作的网站是优惠券网站,我有两个自定义帖子,一个用于商店,另一个用于优惠券。

两者之间存在关系,商店自定义帖子ID被归入自定义帖子元' offer_store'在优惠券定制发布。

我遇到的问题是,当我通过WP导入优惠券时,导入数据就在那里,您可以在后管理编辑页面中看到这一点,但除非我手动更新,否则关系不会匹配在帖子管理编辑页面内发帖。

我导入1000个并且无法手动执行此操作,因此一直在搜索功能。 导入完成后,您可以使用一个函数来运行:

add_action('pmxi_after_xml_import', 'after_xml_import', 10, 1);

function after_xml_import($import_id) {
    $import = (int) $import_id;
    if ( $import == 38 ) {

    }
}

在这里,我尝试了wp_update_post();update_post_meta();

我尝试过的代码示例。

以下代码更新内容但不更新整个帖子,或更具体地更新自定义帖子元:

add_action('pmxi_after_xml_import', 'after_xml_import', 10, 1);

function after_xml_import($import_id) {
    $import = (int) $import_id;
    if ( $import == 38 ) {
        $my_posts = get_posts( array('post_type' => 'offer', 'numberposts' => -1 ) );
        foreach ( $my_posts as $my_post ):
            $my_post['post_content'] = ' offer';
            wp_update_post( $my_post );
        endforeach; 
    }
}

我认为我已经得到以下代码错误,我尝试使用导入导入的相同值更新帖子自定义元键(offer_store):

add_action('pmxi_after_xml_import', 'after_xml_import', 10, 1);

function after_xml_import($import_id) {
    $import = (int) $import_id;
    if ( $import == 38 ) {
        $my_posts = get_posts( array('post_type' => 'offer', 'numberposts' => -1 ) );
        foreach ($my_posts as $my_post) {
            $offer_store_id = get_post_meta( $my_post->ID, 'offer_store', true );
            update_post_meta($my_post->ID, 'offer_store', $offer_store_id);
        }       
    }
}

我不需要更改任何数据,我只需要一个模拟“更新”功能的功能。按钮。

我已经在互联网上搜索了一个解决方案,但找不到一个,我希望有人在这里可以挽救我的生命。

1 个答案:

答案 0 :(得分:2)

  

我遇到的问题是,当我通过WP导入优惠券时,导入数据就在那里,您可以在后管理编辑页面中看到这一点,但除非我手动更新,否则关系不会匹配在帖子管理编辑页面内发帖。

这可能是您导入数据的方式的问题。我记得在导入ACF提供的字段时,WP All Import存在同样的问题。

导入自定义字段时,您需要为WPAI自定义字段部分中的每个字段设置两个行。一个需要fieldnamevalue,另一个需要_fieldname(注意下划线)和field_xyz,后者是ACF使用的字段标识符。< / p>

以下是我使用的导入的示例图像,您可以看到我的意思:

Screenshot of WP All Import configuration

如果只提供一行字段名和值,则WP元数据表中缺少某些内容。正如您已经发现的那样,通过UI再次保存帖子。当您提供如上所述的字段数据时,可以避免必须这样做。

WP All Import提供了一个额外的插件,专门用于处理自定义字段 - 提供拖放式界面,自动创建这些字段组合。您不一定需要使用它,您也可以手动配置它,如上所示。