如何为WordPress文章添加设置父页面的功能?
代码问题与修正方案
原代码存在的问题
- 语法错误:
register_post_type的第二个参数里,$args = array(...)的写法不符合PHP语法,且数组末尾多了分号,会导致代码执行报错。 - 需求不匹配:你的需求是给WordPress默认的「文章(post)」添加父页面设置功能,但代码是注册一个全新的自定义文章类型
job-bank-posts,和默认文章类型无关。 - 参数缺失:即使是注册自定义文章类型,
register_post_type需要public、labels等核心参数,否则自定义类型不会在后台显示,也无法正常使用。
针对默认文章(post)的正确实现
如果要给默认文章添加父页面设置,不需要注册新类型,只需修改其层级属性并添加页面属性支持:
function enable_parent_for_posts() { // 设置文章类型为层级结构 global $wp_post_types; if (isset($wp_post_types['post'])) { $wp_post_types['post']->hierarchical = true; } // 添加页面属性支持 add_post_type_support('post', 'page-attributes'); } add_action('init', 'enable_parent_for_posts');
若需注册自定义文章类型的修正版
如果你的真实需求是创建支持父页面的自定义文章类型job-bank-posts,修正后的代码如下(补充必要参数):
function register_job_bank_posts() { $args = array( 'hierarchical' => true, 'supports' => array('title', 'editor', 'page-attributes'), // 补充常用支持项 'public' => true, // 必须设置为true才能在后台显示 'labels' => array( 'name' => '职位库', 'singular_name' => '职位', 'add_new' => '添加新职位', 'add_new_item' => '添加新职位', 'edit_item' => '编辑职位', 'view_item' => '查看职位', 'all_items' => '所有职位' ), 'menu_icon' => 'dashicons-id-alt' // 可选:设置菜单图标 ); register_post_type('job-bank-posts', $args); } add_action('init', 'register_job_bank_posts');
内容的提问来源于stack exchange,提问作者user19105941
相关产品推荐
相关产品推荐

