如何使用所有元数据将帖子移动到不同的帖子类型?

时间:2012-06-09 作者:Santoro

我正在尝试使用post type Switcher插件将一个名为“new cars”的自定义帖子类型移动到“Seld cars”,该插件运行良好,但与此帖子相关的所有元数据仍然属于“new cars”帖子类型。。。

所以,当我从“新车”帖子类型中列出类别时,问题就出现了,而“售出汽车”的品牌、型号、颜色和其他元素仍然存在。。。

有人有什么建议吗?

1 个回复
SO网友:Stephen Harris

正如评论中所提到的,更改帖子的帖子类型只会更改其“帖子类型”列。所有帖子元数据都与帖子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_postsWP_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 )

结束