正在将“REGISTER_POST_TYPE”移动到单独的文件不起作用

时间:2015-09-23 作者:Bjorn

我正在创建一个简单的插件。当我在主插件文件中注册自定义帖子类型时,它可以工作,但当我将其移动到单独的文件时,它不会显示在管理菜单中。。。

部分主插件文件:

if ( ! defined( \'ABSPATH\' ) ) {
    die( \'Access denied.\' );
}

//Get some constants ready 
define( \'QD_KLANTEN_VERSION\', \'0.0.1\' );
define( \'QD_KLANTEN_PATH\', dirname( __FILE__ ) );
define( \'QD_KLANTEN_PATH_INCLUDES\', dirname( __FILE__ ) . \'/inc\' );
define( \'QD_KLANTEN_FOLDER\', basename( QD_KLANTEN_PATH ) );
define( \'QD_KLANTEN_URL\', plugins_url() . \'/\' . QD_KLANTEN_FOLDER );


add_action( \'init\', \'qdklanten_load_files\' );
function qdklanten_load_files() {
    require_once( QD_KLANTEN_PATH_INCLUDES .\'/qdklanten_cpt.php\' );
    require_once( QD_KLANTEN_PATH_INCLUDES .\'/qdklanten_settings.php\' );
}
内部qdklanten_cpt.php 我注册CPT。。但它不会显示在管理菜单中。。在我之后ALSO 尝试在主文件中注册CPT,我收到一条警告,即已加载同名CPT。。。。那么显然寄存器CPT在第二个文件上运行,但不是完全。。。?

我的qdklanten_cpt.php 文件:

add_action( \'init\', \'qdklanten_register_cpt\' );
function qdklanten_register_cpt() {

    $labels = array(
        \'name\'               => \'QD Klanten\',
        \'singular_name\'      => \'QD Klanten\',
        \'menu_name\'          => \'QD Klanten\',
        \'name_admin_bar\'     => \'QD Klanten\',
        \'add_new\'            => \'Add New\',
        \'add_new_item\'       => \'Add New Client\',
        \'new_item\'           => \'New Client\',
        \'edit_item\'          => \'Edit Client\',
        \'view_item\'          => \'View Client\',
        \'all_items\'          => \'All Clients\',
        \'search_items\'       => \'Search Clients\',
        \'parent_item_colon\'  => \'Parent Clients:\',
        \'not_found\'          => \'No clients found.\',
        \'not_found_in_trash\' => \'No clients found in Trash.\'
    );

    $args = array(
        \'labels\'             => $labels,
        \'description\'        => \'Description.\',
        \'public\'             => true,
        \'publicly_queryable\' => true,
        \'show_ui\'            => true,
        \'show_in_menu\'       => true,
        \'query_var\'          => true,
        \'rewrite\'            => array( \'slug\' => \'qd-klanten\' ),
        \'capability_type\'    => \'post\',
        \'has_archive\'        => true,
        \'hierarchical\'       => false,
        \'menu_position\'      => null,
        \'supports\'           => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\' )
        //\'register_meta_box_cb\' => \'add_qdklantencpt_metaboxes\'
    );

    register_post_type( \'qdklanten\', $args );  

}
为什么寄存器CPT在主文件中工作,而不是在单独的文件中工作。。?我也require_once 一个没有任何问题的设置php文件。

我删除了数据库中的所有CPT输入。。尝试flush_rewrite_rules();register_activation_hook..

注意,我没有收到php错误,并且WP_DEBUG 也没有错误。

我在WP codex中阅读了关于CPT的所有内容,但我在那里找不到解决方案。。。虽然这一定很容易解决,但一天后我还是想不出来。。。。

请帮助:-)

你好,比约恩

1 个回复
最合适的回答,由SO网友:Milo 整理而成

在上加载文件init, 而你加载的文件init. 文件加载时init 已发生,您添加操作太晚。只需在函数外部加载文件,并确保这些文件中的任何内容都连接到正确的操作。

相关推荐