WordPress自定义帖子类型 - 无效的帖子类型?

时间:2017-04-06 12:56:24

标签: wordpress custom-wordpress-pages

为什么我的无效的帖子类型

function keyword_pages_init() {
    $args = array(
      'label' => 'Keywords',
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'page',
        'hierarchical' => false,
        'rewrite' => array('slug' => 'keyword'),
        'query_var' => true,
        'menu_icon' => 'dashicons-admin-page',
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            // 'trackbacks',
            //'custom-fields',
            //'comments',
            'revisions',
            'thumbnail',
            'author',
            'page-attributes',
            )
        );
    register_post_type( 'keyword', $args );
}
add_action( 'init', 'keyword_pages_init' );

出了什么问题?

但使用s:

的关键字可以
function keyword_pages_init() {
    $args = array(
      'label' => 'Keywords',
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'page',
        'hierarchical' => false,
        'rewrite' => array('slug' => 'keywords'),
        'query_var' => true,
        'menu_icon' => 'dashicons-admin-page',
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            // 'trackbacks',
            //'custom-fields',
            //'comments',
            'revisions',
            'thumbnail',
            'author',
            'page-attributes',
            )
        );
    register_post_type( 'keywords', $args );
}
add_action( 'init', 'keyword_pages_init' );

为什么!??

但它适用于新的函数名称!

function keyword2_pages_init() {
    $args = array(
      'label' => 'Keywordsx',
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'page',
        'hierarchical' => false,
        'rewrite' => array('slug' => 'keyword'),
        'query_var' => true,
        'menu_icon' => 'dashicons-admin-page',
        'supports' => array(
            'title',
            'editor',
            'excerpt',
            // 'trackbacks',
            //'custom-fields',
            //'comments',
            'revisions',
            'thumbnail',
            'author',
            'page-attributes',
            )
        );
    register_post_type( 'keyword', $args );
}
add_action( 'init', 'keyword2_pages_init' );

为什么!!?

2 个答案:

答案 0 :(得分:0)

register_post_type('keyword',$ args);

我认为关键字已经被主题或保留关键字使用,你可以使用像pre_keyword这样的和前缀来改变它

如果不行,也改变slu ..

它会解决我认为的问题。我没有测试它,因为我不能在这里测试。

答案 1 :(得分:0)

自定义帖子类型"关键字"很可能已经注册了。使用此功能列出所有已注册的帖子类型:

var_dump(get_post_types());

https://codex.wordpress.org/Function_Reference/get_post_types

基本上是名称"关键字"是合法的 - 来自文档:

  

$ post_type(string)(必填)帖子类型。 (最多20个字符,不能   包含大写字母或空格)默认值:无

https://codex.wordpress.org/Function_Reference/register_post_type

如果您确定slug 关键字未用于其他内容且错误仍然存​​在,那么可能是WordPress核心中的错误。如果你能找到报道的话。

特别是在过去有数百个WordPress项目的时候,我也遇到过这个问题一两次。

如果帖子类型已经存在 - 可以在这里找到如何取消注册帖子类型的答案(但是可能已经由其他插件或类似的原因注册了原因):https://wordpress.stackexchange.com/questions/3820/deregister-custom-post-types

此外,您应该注意add_action也有一个$priority参数。优先权可能很重要。

https://developer.wordpress.org/reference/functions/add_action/