是否可以从自定义产品类型中删除编辑器?

时间:2019-05-21 作者:Rodrigo Butzke

我想删除编辑器并在我的主题中只设置自定义产品类型(WooCommerce)的摘录,这可能吗?

这就是我如何将自定义产品类型添加到WooCommerce产品类型选择器的方法

<?php
defined(\'ABSPATH\') || exit;

class Custom_Product_Type(){
    public function __construct() {
        add_filter(\'product_type_selector\', array($this, \'product_type_selector\'));
    }

    function product_type_selector($types) {
        $types[\'custom_product_type\'] = \'Custom product type\';
        return $types;
    }
}
new Custom_Product_Type();

2 个回复
最合适的回答,由SO网友:Rodrigo Butzke 整理而成

我已经想出了如何仅在选择产品类型时隐藏编辑器,因为如果我删除支持:

1) 产品类型是隐藏的,然后将产品类型更改为另一种,编辑器不会出现在后面

2) 产品类型不是隐藏的,然后将产品类型更改为隐藏编辑器不显示

function admin_footer() {
    if ( \'product\' !== get_post_type() ) :
        return;
    endif;
    ?><script type=\'text/javascript\'>
        jQuery( document ).ready( function() {
            $("#postdivrich").addClass(\'hide_if_custom_product_type\');
            $("#product-type").trigger(\'change\');
        });
    </script><?php
}
add_action( \'admin_footer\', array($this, \'admin_footer\'));
这样,每次选择或取消选择产品类型时,它都会使用WooCommerce方法隐藏或显示

SO网友:Deepak Singh

是的,您可以通过删除来禁用默认编辑器\'editor\' 来自register\\u post\\u类型(\'product\',$args)的supports属性数组

\'supports\'  => array( \'title\', \'editor\', \'thumbnail\', \'comments\', \'custom-fields\' ),
把这个换成这样的东西

\'supports\'  => array( \'title\', \'thumbnail\', \'comments\', \'custom-fields\' ),
您可以阅读wordpress函数参考register_post_type 了解有关自定义post类型参数的详细信息。

Update:

Method 1:

要更改register\\u post\\u type args,请通过“register_post_type_args“过滤器挂钩。

add_filter( \'register_post_type_args\', \'product_support_args\', 10, 2 );
function product_support_args( $args, $post_type ){

    $post_ids_array = array(2119, 2050); // Add Your Allowed Post IDs Here

    if ( \'product\' === $post_type && is_admin()){

        $post_id = $_GET[\'post\']; // Get Post ID from URL

        // Check if the post ID is whitelisted
        if(in_array($post_id, $post_ids_array)){
            $args[\'supports\'] = array( \'title\', \'thumbnail\', \'comments\', \'custom-fields\' ); // Remove Editor from supports args array
        } 

    }

    return $args;

}

Method 2:

通过使用remove_post_type_support() 作用如果需要,您可以按照上面的方法传递允许的post ID数组。

add_action( \'current_screen\', \'remove_editor_support\' );
function remove_editor_support() {

    $get_screen = get_current_screen();
    $current_screen = $get_screen->post_type;
    $post_type = \'product\'; // change post type here

    if ($current_screen == $post_type ) {   
        remove_post_type_support( $current_screen, \'editor\' ); // remove editor from support argument
    }   

}