Как отфильтровать описание метакатализатора excerpt в admin?

Я хочу изменить значение по умолчанию. «Выдержки – это дополнительные краткие сводки вашего контента, которые можно использовать в вашей теме. Подробнее о ручных выдержках». help текст ниже области ввода Excerpt для чего-то более значимого для моего пользовательского типа сообщений.

Я сделал что-то подобное в заголовке Post, используя фильтр «перевод», но как мне это сделать с выдержкой после публикации?

Вот мой текущий код:
add_filter('gettext', 'custom_rewrites', 10, 4);
function custom_rewrites($translation, $text, $domain) {

  global $post; $translations = &get_translations_for_domain($domain); $translation_array = array(); switch ($post->post_type) { case 'model': $translation_array = array( 'Enter title here' => 'Enter model name here', 'Excerpt' => "Byline", 'Excerpts are optional hand-crafted summaries of your content that can be used in your theme.' => "Foobar" ); break; } if (array_key_exists($text, $translation_array)) { return $translations->translate($translation_array[$text]); } return $translation; } 

Третий перевод не работает?

Solutions Collecting From Web of "Как отфильтровать описание метакатализатора excerpt в admin?"

Это описание генерируется post_excerpt_meta_box() и не передается через какие-либо явные фильтры. Это, тем не менее, отражается в функции _e() связанной с переводом, и поэтому проходит через фильтр gettext (который из вашего вопроса вы уже знакомы).

Что касается ограничения его на CPT, я думаю, что текущий тип сообщения в $post_type хранится в глобальной переменной $post_type вы можете проверить.

Поздний ответ

Только фильтры перевода

Существуют фильтры по умолчанию для заголовка и содержимого, но нет для окон выдержки. Таким образом, вы в основном получили опции: Удалите мета-поле по умолчанию и добавьте новый (измененный) один ИЛИ фильтруйте строку через фильтр gettext .

Мета-бокс

Вы в основном знаете концепцию удаления мета-поля (если нет, просто выполните поиск на этом сайте). Затем просто добавьте новый мета-ящик, который будет точно таким же, но со слегка измененным интерфейсом в вашем пользовательском обратном вызове.

Вот оригинал от ядра в качестве ссылки:

 function post_excerpt_meta_box($post) { ?> <label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt; // textarea_escaped ?></textarea> <p><?php _e('Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>'); ?></p> <?php } 

Gettext

Дело в том, что этот фильтр запускает для каждой переводимой строки в пользовательском интерфейсе (что много). В плагине ниже вы увидите, как изменить почтовый ящик заголовка по умолчанию, содержимое по умолчанию и как подключиться как можно позже, чтобы изменить эту строку, а затем im. удалите фильтр, чтобы он не замедлял каждый последующий фильтр.

 <?php /** Plugin Name: (#72418) "kaiser" Alter Post Type UI strings */ if ( ! class_exists( 'WPSE72418_alter_ptui_strings' ) ) { add_action( 'plugins_loaded', array( 'WPSE72418_alter_ptui_strings', 'init' ) ); class WPSE72418_alter_ptui_strings { static protected $instance; public $post_type = 'post'; public $to_replace = 'Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>'; static public function init() { null === self :: $instance AND self :: $instance = new self; return self :: $instance; } public function __construct() { add_action( 'init', array( $this, 'add_post_type' ) ); add_filter( 'enter_title_here', array( $this, 'alter_title_string' ), 10, 2 ); add_filter( 'default_content', array( $this, 'add_editor_default_content' ) ); add_action( 'admin_menu', array( $this, 'add_excerpt_note_filter' ) ); } public function alter_title_string( $title, $post ) { if ( $this->post_type !== $post->post_type ) return $title; return $title = __( 'Enter TITLE name here', 'your_textdomain' ); } public function add_editor_default_content( $content ) { if ( $this->post_type !== get_current_screen()->post_type ) return $content; return __( 'Enter the POST TYPES long description here.', 'your_textdomain' ); } public function add_excerpt_note_filter( $post ) { add_filter( 'gettext', array( $this, 'alter_excerpt_mb_note' ), 10, 3 ); } public function alter_excerpt_mb_note( $l10n, $string, $domain ) { // Remove when not on the needed post type page if ( ! is_null( get_current_screen() ) AND $this->post_type !== get_current_screen()->post_type ) { remove_filter( current_filter(), array( $this, __FUNCTION__ ) ); return; } // Remove when done if ( $this->to_replace === $string ) { remove_filter( current_filter(), array( $this, __FUNCTION__ ) ); return __( 'NEW FOOTNOTE', 'your_textdomain' ); } return $l10n; } } // END Class WPSE72418_alter_ptui_strings } // endif; 

Спасибо за это. В наши дни также возможно применить фильтр к приглашению «Заголовок», используя enter_title_here. Наслаждайтесь!

 add_filter ('enter_title_here', your_filter); 

Как и следовало ожидать.