我有一个包含多个CPT的插件(我们将它们称为CPT-a、CPT-B、CPT-C和CPT-D)。所有CPT都有自定义字段。在CPT-D中,用户可以进行选择,并将CPT-a、CPT-B和CPT-C中的一个职位分配给CPT-D中的当前职位。基本上,相关记录相互链接。
如果CPT-A、CPT-B和/或CPT-C中的帖子尚不存在,用户可以通过使用标准文本输入字段输入帖子标题“快速”创建帖子。不需要其他数据,以后可以输入任何可选数据。
然后,我将使用wp\\u insert\\u post()添加新的帖子(CPT-A、CPT-B和/或CPT-C)。这一切都按预期进行。
接下来,我需要使用新CPT-A、CPT-B和/或CPT-C的post ID更新CPT-D的POSTETA。为此,我使用update\\u post\\u meta()。
我遇到的问题是,错误的帖子的Posteta正在更新。
例如,如果CPT-D的Post ID为99,则如果设置了所有三个CPT,则其应具有postmeta\\u键“assigned-CPT-a”=100、“assigned-CPT-b”=101和“assigned-CPT-c”=102。
取而代之的是:CPT-D获取Posteta“assigned-CPT-a”=100CPT-a获取Posteta“assigned-CPT-b”=101CPT-b获取Posteta“assigned-CPT-c”=102
以下是插入新CPT并更新postmeta的代码示例:
<?php
$new_cpta_title = sanitize_text_field( $_POST[ \'cpt-a-name\' ] );
/* Only add new if a CPT with the same title doesn\'t already exist */
if( null == get_page_by_title( $new_cpta_title, OBJECT, \'cpt-a\' ) ) {
$new_cpta_slug = preg_replace("/[^A-Za-z0-9]/",\'\',strtolower($new_cpta_title));
$author_id = get_current_user_id();
$new_cpta = array(
\'comment_status\' => \'closed\',
\'ping_status\' => \'closed\',
\'post_author\' => $author_id,
\'post_name\' => $new_cpta_slug,
\'post_title\' => $new_cpta_title,
\'post_status\' => \'publish\',
\'post_type\' => \'cpt-a\'
);
wp_insert_post( $new_cpta );
$new_cpta_info = get_page_by_path($new_cpta_slug, OBJECT, \'cpt-a\');
if ( $new_cpta_info ) {
$new_cpta_ID = $new_cpta_info->ID;
update_post_meta( $post_id, \'cpt-a-id\', $new_cpta_ID );
}
}
所以,我的问题是,如何将update\\u post\\u meta中的$post\\u id重置为与原始CPT-D相同的post id?