Php 更新WordPress自定义帖子元数据的函数

Php 更新WordPress自定义帖子元数据的函数,php,wordpress,function,custom-post-type,Php,Wordpress,Function,Custom Post Type,这个问题在这里已经提过好几次了,但是从我研究过的无数帖子中,我没有成功地找到解决方案 我正在使用的网站是一个优惠券网站,我有两个自定义帖子,一个用于商店,另一个用于优惠券 两者之间存在关系,商店自定义帖子ID在优惠券自定义帖子中的自定义帖子元“offer_store”中插补 我遇到的问题是,当我通过WP导入优惠券时,所有导入数据都在那里,你可以在post admin编辑页面中看到这一点,但是关系不匹配,除非我在post admin编辑页面中手动更新帖子 我导入1000个,无法手动执行此操作,因此

这个问题在这里已经提过好几次了,但是从我研究过的无数帖子中,我没有成功地找到解决方案

我正在使用的网站是一个优惠券网站,我有两个自定义帖子,一个用于商店,另一个用于优惠券

两者之间存在关系,商店自定义帖子ID在优惠券自定义帖子中的自定义帖子元“offer_store”中插补

我遇到的问题是,当我通过WP导入优惠券时,所有导入数据都在那里,你可以在post admin编辑页面中看到这一点,但是关系不匹配,除非我在post admin编辑页面中手动更新帖子

我导入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\u update\u post;,更新后元

我尝试过的代码示例

以下代码更新内容,但不更新整个帖子,更确切地说,更新自定义帖子元:

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; 
    }
}
我想我把下面的代码搞错了,我正在尝试用导入的相同值更新posts自定义元密钥提供\ u存储:

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);
        }       
    }
}
我不需要更改任何数据,我只需要一个模拟“更新”按钮的函数

我在互联网上搜索了一个解决方案,但找不到,我希望这里有人能救我的命

我遇到的问题是,当我通过WP导入优惠券时,所有导入数据都在那里,你可以在post admin编辑页面中看到这一点,但是关系不匹配,除非我在post admin编辑页面中手动更新帖子

这可能是如何导入数据的问题。我记得在导入ACF提供的字段时,WP All Import也有同样的问题

导入自定义字段时,在WPAI自定义字段部分中,每个字段需要有两行。一个需要是fieldname和value,另一个需要是_fieldname注意下划线和字段_xyz,后者是ACF使用的字段标识符

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

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


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

我认为这是错误的方法。导入后,帖子id可能已更改,因此您不应将优惠券分配给店铺帖子id。请改用唯一的店铺标识。店铺帖子id永远不会更改。在导入过程中,stores post中没有任何内容更改,只有优惠券post类型。它绝对是正确的ID,因为它在后端显示商店名称,而在前端,这一关系不匹配。当你手动更新帖子时,效果很好。我明白你的意思,我对自己的一些自定义元数据使用ACF,但是导入的数据被导入到在主题内创建的自定义元数据字段中。我查看了Posteta表,与ACF元字段不同,由主题创建的字段没有相应的“\u offer\u store”和“field\u xyz”。有什么想法吗?可能还是类似的。您是否可以检查导入后特定帖子的PosteTa表包含哪些条目,以及在您刚刚通过UI再次保存帖子后,这些条目是否会发生变化/如何发生变化?通过UI比较导入后的元数据和手动更新后的元数据,可以确定导入过程中遗漏的一些必需元数据。愚蠢的错误,但有时有助于与某人讨论这个问题,非常感谢,如果没有你,就不可能做到这一点。干杯,巴德