将`supports`数组添加到WordPress自定义帖子类型

时间:2016-04-26 作者:Aziz

我正在尝试添加supports 参数设置为“我的自定义帖子类型”,但它不起作用,并将编辑页呈现为空白:

add_action( \'init\', \'create_post_type\' );
function create_post_type() {
  register_post_type( \'my_campaigns\',
    array(
      \'labels\' => array(
        \'name\' => __( \'Campaigns\' ),
        \'singular_name\' => __( \'Campaign\' )
      ),
      \'supports\' => array(
         \'title\' => true,
         \'editor\' => true,
         \'thumbnail\' => true ),
    )
  );
}

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

使用\'supports\' => [ \'title\', \'editor\', \'thumbnail\' ] – 不同的值,而不是键。

如果我们调查register_post_type(), 我们发现以下几行:

if ( ! empty( $args->supports ) ) {
    add_post_type_support( $post_type, $args->supports );
    unset( $args->supports );
} elseif ( false !== $args->supports ) {
    // Add default features
    add_post_type_support( $post_type, array( \'title\', \'editor\' ) );
}
在中add_post_type_support(), 我们看到,这些值被转换为具有值的数组键true:

function add_post_type_support( $post_type, $feature ) {
    global $_wp_post_type_features;

    $features = (array) $feature;
    foreach ($features as $feature) {
        if ( func_num_args() == 2 )
            $_wp_post_type_features[$post_type][$feature] = true;
        else
            $_wp_post_type_features[$post_type][$feature] = array_slice( func_get_args(), 2 );
    }
}
register_post_type() 正在呼叫add_post_type_support() 只有两个参数else 在后一个功能中无法访问。

但是,您可以致电add_post_type_support() 直接和传递自定义支持功能:

add_post_type_support(
    \'my_campaigns\',
    \'subheadline\',
    [
        \'min_length\' => 30,
        \'max_length\' => 300,
    ]
);
但是,您必须分别为每个特性调用该函数。

旁注:请不要使用\'name\' => __( \'Campaigns\' ). 如果没有文本域,这个字符串根本不可翻译,但它会触发WordPress默认翻译中的查找,这相当大,而且速度很慢。看见How to Internationalize Your Plugin 有关详细信息。

相关推荐