我知道如何创建自定义帖子类型。从食典看来, 我应该能够创建一个行为似页面的自定义帖子类型, 特别是能够通过模板选择器弹出窗口和类别/标签选择器分配模板。
到目前为止, 我所获得的只是基本的编辑器, 而且我可以获得一个精选的图像选择器。但是我所寻找的基本上是一个页面, 我可以将其视为自定义帖子类型。
编辑:我认为这将是显而易见的, 但我正在使用functions.php进行此操作:
register_post_type( hh_town, array(
'labels' =>
array(
'name' =>
__( 'Towns' ), 'singular_name' =>
__( 'Town' ), 'add_new' =>
_x('Add Town', 'towns'), 'add_new_item' =>
__('Add Town'), 'edit' =>
_x('Edit Towns', 'Towns'), 'edit_item' =>
__('Edit Town'), 'new_item' =>
__('New Town'), 'view' =>
_x('View Town', 'towns'), 'view_item' =>
__('View Town')
), 'public' =>
true, 'has_archive' =>
true, 'hierarchical' =>
true, 'show_ui' =>
true, 'supports' =>
array('title', 'editor', 'page-attributes', 'thumbnail', 'custom-fields'), 'capability_type' =>
'page', 'taxonomies' =>
array('post_tag', 'category')
)
);
#1【使用模板选择器(页面UI)创建自定义WordPress帖子类型吗()】只需将此代码添加到你的functions.php
add_action( 'add_meta_boxes', 'add_custom_page_attributes_meta_box' );
function add_custom_page_attributes_meta_box(){
global $post;
if ( 'page' != $post->
post_type &
&
post_type_supports($post->
post_type, 'page-attributes') ) {
add_meta_box( 'custompageparentdiv', __('Template'), 'custom_page_attributes_meta_box', NULL, 'side', 'core');
}
}function custom_page_attributes_meta_box($post) {
$template = get_post_meta( $post->
ID, '_wp_page_template', 1 );
?>
<
select name="page_template" id="page_template">
<
?php $default_title = apply_filters( 'default_page_template_title', __( 'Default Template' ), 'meta-box' );
?>
<
option value="http://www.srcmini.com/default">
<
?php echo esc_html( $default_title );
?>
<
/option>
<
?php page_template_dropdown($template);
?>
<
/select>
<
?php
}add_action( 'save_post', 'save_custom_page_attributes_meta_box' );
function save_custom_page_attributes_meta_box( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) &
&
DOING_AUTOSAVE ) return;
if ( isset( $_POST['post_type'] ) &
&
'page' == $_POST['post_type'] ) return;
if ( ! current_user_can( 'edit_post', $post_id ) ) return;
if ( ! empty( $_POST['page_template'] ) &
&
get_post_type( $post_id ) != 'page' ) {
update_post_meta( $post_id, '_wp_page_template', $_POST['page_template'] );
}
}
推荐阅读
- Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
- contact form需要填写以下两个字段之一
- 在ol li列表中看不到数字
- 根据URL更改wordpress主题
- 覆盖WooCommerce类别列表Walker的最佳方法
- 找不到导致右边距的CSS
- 将maxlength属性添加到WordPress帖子标题
- WordPress中的外观菜单选项
- 向页面添加”添加到购物车消息”