【发布时间】:2017-02-01 09:39:19
【问题描述】:
这个问题已经在这里提出过几次了,但是从我研究过的无数帖子中我都没有成功找到解决方案。
我正在使用的网站是一个优惠券网站,我有两个自定义帖子,一个用于商店,另一个用于优惠券。
两者之间有关系,商店自定义帖子 ID 是在优惠券自定义帖子中的自定义帖子元“offer_store”中估算的。
我遇到的问题是,当我通过 WP All Import 导入优惠券时,数据就在那里,您可以在帖子管理编辑页面中看到这一点,但除非我手动更新帖子中的帖子,否则关系不匹配管理员编辑页面。
我导入了 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);
}
}
}
我不需要更改任何数据,我只需要一个模拟“更新”按钮的函数。
我在互联网上搜索了解决方案,但找不到解决方案,我希望这里有人能救我的命。
【问题讨论】:
-
我认为这是错误的方式。导入后帖子 ID 可能已更改,因此您不应将优惠券分配给商店帖子 ID。请改用唯一的商店标识符。
-
商店的帖子 ID 永远不会改变。导入期间商店帖子中的任何内容都不会更改,只有优惠券帖子类型。这绝对是正确的 ID,因为它在后端表示商店名称,而前端这种关系不匹配。当您手动更新帖子时,它可以正常工作。
标签: php wordpress function custom-post-type