使用过滤器修改已注册自定义 Post 类型的参数
Modify Arguments of Already Registered Custom Post Type with Filter
我正在尝试在自定义 post 类型上设置 show_in_rest
参数,该类型已被第三方插件从 false
注册到 true
。值得庆幸的是,插件作者包含了一个参数过滤器并提供了一个示例(请参见下面的第一个代码块)。 知道如何将提到的参数设置为 true 吗?
这是CPT注册功能
public function register_client() {
$labels = apply_filters( 'business_manager_client_labels', array(
'name' => _x( '%2$s', 'post type general name', 'business-manager' ),
'singular_name' => _x( '%1$s', 'post type singular name', 'business-manager' ),
'add_new' => __( 'New %1s', 'business-manager' ),
'add_new_item' => __( 'Add New %1$s', 'business-manager' ),
'edit_item' => __( 'Edit %1$s', 'business-manager' ),
'new_item' => __( 'New %1$s', 'business-manager' ),
'all_items' => __( '%2$s', 'business-manager' ),
'view_item' => __( 'View %1$s', 'business-manager' ),
'search_items' => __( 'Search %2$s', 'business-manager' ),
'not_found' => __( 'No %2$s found', 'business-manager' ),
'not_found_in_trash' => __( 'No %2$s found in Trash', 'business-manager' ),
'parent_item_colon' => '',
'menu_name' => _x( '%2$s', 'admin menu', 'business-manager' ),
'filter_items_list' => __( 'Filter %2$s list', 'business-manager' ),
'items_list_navigation' => __( '%2$s list navigation', 'business-manager' ),
'items_list' => __( '%2$s list', 'business-manager' ),
) );
foreach ( $labels as $key => $value ) {
$labels[ $key ] = sprintf( $value, business_manager_label_client_single(), business_manager_label_client_plural() );
}
$args = array(
'labels' => $labels,
'public' => false,
'show_in_rest' => false,
'exclude_from_search' => true,
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => false, // we are using custom add_submenu_page
'query_var' => true,
'capability_type' => 'post',
'map_meta_cap' => true,
'has_archive' => false,
'hierarchical' => false,
'supports' => array( 'title' ),
);
register_post_type( 'bm-client', apply_filters( 'business_manager_client_post_type_args', $args ) );
}
这是提供的例子
add_filter( 'business_manager_employee_post_type_args', 'example_function_for_employee_post_type', 10, 1 );
function example_function_for_employee_post_type( $args ) {
print( $args ); //print the return value
return $args;
}
试试下面的代码。您可以访问“$args”参数中的“show_in_rest”键并通过 true 更新值。
add_filter( 'business_manager_employee_post_type_args', 'example_function_for_employee_post_type', 10, 1 );
function example_function_for_employee_post_type( $args ) {
$args['show_in_rest'] = true;
return $args;
}
对于希望在没有预定义过滤器挂钩的任何其他 CPT 中更改此设置的任何人。 CTP 注册函数已经包含可能使用的所需过滤器挂钩:register_post_type_args
所以这变成了:
add_action('register_post_type_args', function ($args, $postType) {
if ($postType !== 'bm-client'){
return $args;
}
$args['show_in_rest'] = true;
return $args;
}, 99, 2);
相关文章:https://zerowp.com/modify-cpt-arguments-after-it-was-registered/
我正在尝试在自定义 post 类型上设置 show_in_rest
参数,该类型已被第三方插件从 false
注册到 true
。值得庆幸的是,插件作者包含了一个参数过滤器并提供了一个示例(请参见下面的第一个代码块)。 知道如何将提到的参数设置为 true 吗?
这是CPT注册功能
public function register_client() {
$labels = apply_filters( 'business_manager_client_labels', array(
'name' => _x( '%2$s', 'post type general name', 'business-manager' ),
'singular_name' => _x( '%1$s', 'post type singular name', 'business-manager' ),
'add_new' => __( 'New %1s', 'business-manager' ),
'add_new_item' => __( 'Add New %1$s', 'business-manager' ),
'edit_item' => __( 'Edit %1$s', 'business-manager' ),
'new_item' => __( 'New %1$s', 'business-manager' ),
'all_items' => __( '%2$s', 'business-manager' ),
'view_item' => __( 'View %1$s', 'business-manager' ),
'search_items' => __( 'Search %2$s', 'business-manager' ),
'not_found' => __( 'No %2$s found', 'business-manager' ),
'not_found_in_trash' => __( 'No %2$s found in Trash', 'business-manager' ),
'parent_item_colon' => '',
'menu_name' => _x( '%2$s', 'admin menu', 'business-manager' ),
'filter_items_list' => __( 'Filter %2$s list', 'business-manager' ),
'items_list_navigation' => __( '%2$s list navigation', 'business-manager' ),
'items_list' => __( '%2$s list', 'business-manager' ),
) );
foreach ( $labels as $key => $value ) {
$labels[ $key ] = sprintf( $value, business_manager_label_client_single(), business_manager_label_client_plural() );
}
$args = array(
'labels' => $labels,
'public' => false,
'show_in_rest' => false,
'exclude_from_search' => true,
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => false, // we are using custom add_submenu_page
'query_var' => true,
'capability_type' => 'post',
'map_meta_cap' => true,
'has_archive' => false,
'hierarchical' => false,
'supports' => array( 'title' ),
);
register_post_type( 'bm-client', apply_filters( 'business_manager_client_post_type_args', $args ) );
}
这是提供的例子
add_filter( 'business_manager_employee_post_type_args', 'example_function_for_employee_post_type', 10, 1 );
function example_function_for_employee_post_type( $args ) {
print( $args ); //print the return value
return $args;
}
试试下面的代码。您可以访问“$args”参数中的“show_in_rest”键并通过 true 更新值。
add_filter( 'business_manager_employee_post_type_args', 'example_function_for_employee_post_type', 10, 1 );
function example_function_for_employee_post_type( $args ) {
$args['show_in_rest'] = true;
return $args;
}
对于希望在没有预定义过滤器挂钩的任何其他 CPT 中更改此设置的任何人。 CTP 注册函数已经包含可能使用的所需过滤器挂钩:register_post_type_args
所以这变成了:
add_action('register_post_type_args', function ($args, $postType) {
if ($postType !== 'bm-client'){
return $args;
}
$args['show_in_rest'] = true;
return $args;
}, 99, 2);
相关文章:https://zerowp.com/modify-cpt-arguments-after-it-was-registered/