Intereting Posts

Redeclare slug & имя пользовательского типа сообщения?

Я регистрирую пользовательский тип сообщения в плагине, но хочу разрешить пользователям плагина изменять его впоследствии (например, если они устанавливают для клиентов и т. Д.),

function create_reviews_post_type() { register_post_type('reviews', array( 'labels' => array( 'name' => __('Reviews'), 'singular_name' => __('Review') ), 'public' => true, 'has_archive' => true, ) ); } add_action('init', 'create_reviews_post_type'); 

Какой лучший способ достичь этого? Например, я хочу сменить имя , сингулярное имя и слизню в будущем.

Я понимаю, что есть аналогичный вопрос , но

  1. ему 5 лет, и я надеюсь, что может быть проще,
  2. он не охватывает название

WordPress предоставляет фильтр register_post_type_args чтобы пользователи могли это сделать:

 function wpd_modify_post_type( $args, $post_type ){ if( 'reviews' == $post_type ){ $args['labels']['name'] = 'New name'; $args['labels']['singular_name'] = 'New singular name'; $args['rewrite']['slug'] = 'new-slug'; } return $args; } add_filter( 'register_post_type_args', 'wpd_modify_post_type', 10, 2 ); 

Имейте в виду, что если сбой изменится, пользователю необходимо будет вручную очистить правила перезаписи, чтобы новый пул начал работать, что можно сделать, посетив страницу «Настройки»> «Постоянная ссылка» в админ.

Вы можете сделать что-то простое, например, предоставить им фильтры для изменения.

 function create_reviews_post_type() { $slug = apply_filters('plugin_cpt_slug','reviews'); $name = apply_filters('plugin_cpt_name','Reviews'); $sname = apply_filters('plugin_cpt_name_singular','Review'); register_post_type($slug, array( 'labels' => array( 'name' => __($name), 'singular_name' => __($sname) ), 'public' => true, 'has_archive' => true, ) ); } add_action('init', 'create_reviews_post_type'); 

Они могут изменять их с помощью add_filter () следующим образом:

 add_filter('plugin_cpt_slug','change_plugin_cpt_slug'); function change_plugin_cpt_slug(){ return 'complaints'; } //etc., etc. 

Это, по общему признанию, многословный способ сделать это, но он работает.