主题不会保存为自定义帖子类型--如何调试?

时间:2019-02-19 作者:arnoldbird

在我的网站的两种自定义帖子类型中,主题(在主题元框中,请参见下面的屏幕截图)不会保存。我认为这不是一个定制的元框。至少,我认为它是WordPress的标准配置,因为在自定义主题中这个主题框没有add\\u meta\\u box函数调用。

在代码中,我应该在哪些地方进行调试?我不知所措,因为这不是自定义元框的问题,所以我不确定自定义代码中的什么地方可能会干扰主题框。这可能不是WordPress的bug,因为该主题是为我的一个自定义帖子类型保存的。侧边栏中的其他分类法元框都没有失败,除了主题分类法的元框。例如,在下面的屏幕截图中,您可以看到国家元框的顶部,保存国家值没有问题。只有主题框无法保存,并且仅适用于某些自定义帖子类型。

调试这个的常见嫌疑犯是什么?主题中有我应该查看的文件吗?控制台中没有javascript错误,日志中也没有PHP错误。

enter image description here

我一直在比较一个自定义帖子类型(我的主题/公司/帖子类型/等等)的代码,其中主题复选框将保存,而两个没有保存,我找不到任何差异。

下面是主题将不保存的自定义帖子类型的示例代码。虽然我看不到此代码与保存主题的自定义帖子类型之间存在明显差异,但我不确定这里是否有与此问题相关的内容:

class Example_Post_Type_Program extends Example_Post_Type {

    public $name = \'program\';

    public function create_post_type() {
        register_post_type(
            $this->name,
            [
                \'labels\' => [
                    \'name\'                  => __( \'Programs\', \'example\' ),
                    \'singular_name\'         => __( \'Program\', \'example\' ),
                    \'add_new\'               => __( \'Add New Program\', \'example\' ),
                    \'add_new_item\'          => __( \'Add New Program\', \'example\' ),
                    \'edit_item\'             => __( \'Edit Program\', \'example\' ),
                    \'new_item\'              => __( \'New Program\', \'example\' ),
                    \'view_item\'             => __( \'View Program\', \'example\' ),
                    \'view_items\'            => __( \'View Programs\', \'example\' ),
                    \'search_items\'          => __( \'Search Programs\', \'example\' ),
                    \'not_found\'             => __( \'No programs found\', \'example\' ),
                    \'not_found_in_trash\'    => __( \'No programs found in Trash\', \'example\' ),
                    \'parent_item_colon\'     => __( \'Parent Program:\', \'example\' ),
                    \'all_items\'             => __( \'All Programs\', \'example\' ),
                    \'archives\'              => __( \'Program Archives\', \'example\' ),
                    \'attributes\'            => __( \'Program Attributes\', \'example\' ),
                    \'insert_into_item\'      => __( \'Insert into program\', \'example\' ),
                    \'uploaded_to_this_item\' => __( \'Uploaded to this program\', \'example\' ),
                    \'filter_items_list\'     => __( \'Filter programs list\', \'example\' ),
                    \'items_list_navigation\' => __( \'Programs list navigation\', \'example\' ),
                    \'items_list\'            => __( \'Programs list\', \'example\' ),
                    \'menu_name\'             => __( \'Programs\', \'example\' ),
                ],
                \'public\' => true,
                \'show_in_rest\' => true,
                \'menu_icon\' => \'dashicons-images-alt\',
                \'supports\' => [ \'title\', \'thumbnail\', \'author\', \'editor\', \'revisions\', \'excerpt\' ],
                \'taxonomies\' => [ \'category\', \'post_tag\', \'topic\', \'language\', \'country\' ],
                \'rewrite\' => [
                    \'slug\' => \'programs\',
                ],
            ]
        );
    }
}
$example_post_type_program = new Example_Post_Type_Program();

1 个回复
SO网友:sMyles

我不知道WordPress中有任何“默认”的“主题元框”。您是否已切换到默认的WordPress主题,以查看是否仍显示此主题?听起来像是theme,或者其他插件正在添加它(发布一个屏幕截图来帮助我们…帮助你)。

您应该在文件夹中进行搜索(使用您拥有的任何IDE),查找字符串或屏幕上显示的其他“主题”,这样您就可以确定添加这些内容的人/内容(即使是核心内容)。

很可能它正在使用save_post_{$POST_TYPE}save_post 钩住以更新任何自定义元或其他值。。。但即使不知道“话题”从何而来,也很难说。

您可以从以下位置获得PHPStorm EAP(早期访问计划)的免费/试用版:https://www.jetbrains.com/phpstorm/eap/

设置xDebug处理并添加断点,然后仔细检查代码,直到找到问题。将为您节省数小时的时间,不仅是现在,而且在将来。

您还可以使用Local by Fleel来设置本地WordPress安装,它们有一个插件可以在PHPStorm中自动设置xDebug。

相关推荐

自定义MetaBox中的WP查询排序顺序

我正在尝试对基于meta\\u键交易金额的帖子列表进行排序,这将首先显示最高的交易,然后逐步降低到较小的交易金额。交易金额将在1000至900万之间。目前,下面的代码正在根据第一个数字对交易金额进行排序。因此,如果我有一个6000和6000000的交易,他们会将它们并排放置,而不是先显示6000000。交易金额从CMB2内的自定义元数据库中提取。我的代码中是否缺少了排序无法识别逗号后的金额的内容?我的WP\\U查询 <?php $transaction = n