向自定义POST_TYPE添加附加字段

时间:2013-03-01 作者:Toni Michel Caubet

我正在尝试将另一个字段(副标题)添加到我已经创建和现有的自定义post\\u类型:team(我的*子主题中的functions.php中的代码)

<?php
/**
 * Custom Post type register framework
 */
include(get_stylesheet_directory(). \'/inc/acpt/init.php\');
add_action(\'init\', \'makethem\');
function makethem() {
    $args = array(
        \'supports\' => array( \'title\', \'editor\', \'page-attributes\', \'thumbnail\', \'excerpt\'  ),
        \'hierarchical\' => true,
    );

    $team = new post_type(\'team\',\'team\', false,  $args );

}

/**
 * Initialize the metabox class
 */
add_action( \'init\', \'be_initialize_team_meta_boxes\', 9999 );
function be_initialize_team_meta_boxes() {
    if ( !class_exists( \'team_Meta_Box\' ) ) {
        require_once( get_stylesheet_directory(). \'/inc/metaboxes/fisio-metaboxes.php\' );
        require_once( get_stylesheet_directory(). \'/inc/metaboxes/init.php\' );

    }
}
?>
这是fisio元数据库中的代码。php

    <?php
/**
 * Include and setup custom metaboxes and fields.
 *
 * @category YourThemeOrPlugin
 * @package  Metaboxes
 * @license  http://www.opensource.org/licenses/gpl-license.php GPL v2.0 (or later)
 * @link     https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress
 */

/**
 * Define the metabox and field configurations.
 *
 * @param  array $meta_boxes
 * @return array
 */
 add_filter( \'team_Meta_Box\', \'team_sample_metaboxes\' );
function team_sample_metaboxes( array $meta_boxes ) {
    $prefix = \'_team_\';
    $meta_boxes[] = array(
            \'id\'         => \'team_details\',
            \'title\'      => \'Team details\',
            \'post_type\'      => \'team\', // Post type    
            \'context\'    => \'side\',
            \'priority\'   => \'high\',
            \'show_names\' => true, // Show field names on the left
            \'fields\'     => array(
                array(
                    \'name\' => \'Subtitle\',
                    //\'desc\' => \'\',
                    \'id\' => $prefix . \'subtitle\',
                    \'type\' => \'text\'
                ),
            ),
        );
    return $meta_boxes;
}

add_action( \'init\', \'team_initialize_team_meta_boxes\', 9999 );
/**
 * Initialize the metabox class.
 */
function team_initialize_team_meta_boxes() {

    if ( ! class_exists( \'team_Meta_Box\' ) )
        require_once get_stylesheet_directory(). \'/inc/metaboxes/init.php\';

}
问题是,当在wp admin i whant中添加新团队的post\\u类型post时,post\\u类型没有subtitle字段

我错过了什么?

编辑:如果你没有注意到我以前从未这样做过。我正在跟踪this steps 没有成功。。

-编辑-

我也在这样尝试:

$meta_boxes[] = array(
            \'id\'         => \'team_details\',
            \'title\'      => \'Team details\',
            \'pages\'      => \'team\', // Post type    
            \'context\'    => \'normal\',
            \'priority\'   => \'high\',
            \'show_names\' => true, // Show field names on the left
            \'fields\'     => array(
                array(
                    \'name\' => \'Subtitle\',
                    \'desc\' => \'This is the subtitle\',
                    \'id\' => $prefix . \'subtitle\',
                    \'type\' => \'text\'
                ),
            ),
        );
-编辑-

还尝试将post\\u类型作为数组传递

\'pages\'      => array(\'team\'), // Post type 

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

在代码中,您正在使用:

add_filter( \'team_Meta_Box\', \'team_sample_metaboxes\' );
在您链接到的网站上,他们正在使用:

add_filter( \'cmb_meta_boxes\', \'wpb_sample_metaboxes\' );
所以我的问题是:您是否在init中将所有“cmb”实例都更改为“team”。php文件?

如果您这样做了,那么要使用的正确过滤器应该是:

add_filter( \'team_meta_boxes\', \'team_sample_metaboxes\' );
编辑:如果没有更改初始化。php文件(我真的不明白为什么要更改它),那么在以下情况下,您不应该将代码中的“cmb”更改为“team”:

(1)

add_filter( \'cmb_meta_boxes\', \'team_sample_metaboxes\' );
(2)

if ( ! class_exists( \'cmb_Meta_Box\' ) )

SO网友:Matthew Boynes

我最近发布了一个名为SuperCPT 这使得开发人员很容易完成此过程。也就是说,听起来你并不是一个真正的开发人员,你可能会从UI中受益。在这种情况下,您可以查看插件More Fields 它允许您在不编写代码的情况下创建元框和字段。

如果最终使用SuperPT,则可以将所有代码(自定义post类型声明和元框代码)替换为:

function wpse_88959_add_meta_boxes() {
    if ( ! class_exists( \'Super_Custom_Post_Type\' ) )
        return;

    $teams = new Super_Custom_Post_Type( \'team\', \'Team\', \'Teams\', array( \'hierarchical\' => true ) );
    $teams->add_meta_box( array(
        \'id\' => \'team_details\',
        \'context\' => \'normal\',
        \'priority\' => \'high\',
        \'fields\' => array(
            \'subtitle\' => array()
        )
    ) );
}
add_action( \'after_setup_theme\', \'wpse_88959_add_meta_boxes\' );

SO网友:Syed Balkhi

尝试将页面更改为如下数组:

\'pages\' => array(\'page\'), // post type

SO网友:Marc Wiest

我建议你用这个great tool 添加元字段。它有许多功能,是由值得尊敬的WP编码器构建的。一切正常。

只需阅读说明,并将示例函数复制到函数文件中即可。

结束

相关推荐

在unctions.php中按多个值排序定制邮政类型档案

我看到了这篇文章,该函数帮助我解决了自定义文章类型的归档页面分页问题:pagination doesn't show up for custom post type我面临的挑战是,我需要这种类型的函数来说明如何按照ASC顺序和与我创建的日期值关联的自定义字段值对存档进行排序。如何通过从其他地方获取代码并反复尝试来编写函数?