我在当前项目中的元盒中使用以下代码:
function parent_select ($parent_type) {
global $post;
global $wpdb;
$query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = \'{$parent_type}\' AND post_status = \'publish\' ORDER BY post_title";
$results = $wpdb->get_results($query, OBJECT);
echo \'<select name="parent_id" id="parent_id">\';
echo \'<option value = "">None</option>\';
foreach ($results as $r) {
echo \'<option value="\', $r->ID, \'"\', $r->ID == $post->post_parent ? \' selected="selected"\' : \'\', \'>\', $r->post_title, \'</option>\';
}
echo \'</select>\';
}
此代码输出一个选择框,该框由特定类型的所有帖子的帖子标题和帖子id填充。如果将其放置在子帖子类型的元框中,则只需选择父帖子并进行更新。WordpPress已经在寻找一个名为“parent\\u id”的表单元素来设置帖子的父级,因此除了创建元框之外,不需要其他代码:
add_meta_box(\'parent_series\', \'Series\', \'show_series_metabox\', \'episode\', \'side\', \'high\'); //add a side metabox
function show_series_metabox() {
parent_select(\'series\');
echo \'Please select series\';
}
具有讽刺意味的是,我这样做是为了一个类似的情况:我有一个系列的帖子类型,另外两个帖子类型,一个用于剧集,一个用于DVD发行,这两个类型都使用帖子的post\\u parent字段作为父子关系连接到一个系列。
特别感谢@MikeSchinkelcode I modified