正如评论中所提到的,更改帖子的帖子类型只会更改其“帖子类型”列。所有帖子元数据都与帖子ID相关联,这一点永远不会改变。
但是,您可能看不到此信息:如果旧的帖子类型具有与之相关联的元盒或分类法,则新的帖子类型没有-然后,虽然转换后的帖子与其元数据/分类法的关系仍然存在于数据库中,但它不会出现在管理屏幕中。
如果您的“新车”帖子类型有任何元数据库或分类法,您也会希望将它们注册到“已售出的汽车”中。对于分类法,这是通过在注册时指定帖子类型来完成的:
register_taxonomy(\'my-taxonomy\',array(\'new_cars\',\'sold_cars\', $args);
或注册自定义post\\u类型时(请参阅
register_post_type()
), 或通过使用
register_taxonomy_for_object_type()
.
类似地,您需要将您的元数据库添加到两种帖子类型:
add_meta_box( $id, $title, $callback, \'new_cars\', $context, $priority, $callback_args )
add_meta_box( $id, $title, $callback, \'sold_cars\', $context, $priority, $callback_args )
并确保对这两种帖子类型都运行相关的处理。
然而,从你所追求的角度来看,你应该使用post类型“cars”,并注册分类法(比如“car\\u status”),以及现有的“make”分类法。
然后,可以将汽车与汽车状态术语相关联(例如“new”或“Seld”)。
要获得所有品牌的新车,您可以使用tax_query
的参数get_posts
或WP_Query
$args = array(
\'tax_query\' => array(
\'relation\' => \'AND\',
array(
\'taxonomy\' => \'car_status\',
\'field\' => \'slug\',
\'terms\' => array( \'new\')
),
array(
\'taxonomy\' => \'make\',
\'field\' => \'slug\',
\'terms\' => array( \'xyz\')
)
)
);
$query = new WP_Query( $args )