Intereting Posts
Массовое редактирование текста пользовательского отрывка в WordPress get_the_terms – но показывать только 4 сообщения Предупреждение: urlencode () ожидает, что параметр 1 будет строкой, заданный массив Как заказывать сообщения по убыванию числа комментариев на странице таксономии? не может получить доступ к некоторой функции worress из моего плагина ACF – получить самое низкое и самое высокое значение из поля Последний раз, когда пользователь вошел в систему Проблемы с дочерью, functions.php как вставить HTML-форму в всплывающее окно javascript? Лучшее изображение Две установки WordPress – страница с ошибкой по умолчанию по умолчанию Как удалить атрибут novalidate из формы комментария Добавить PHP-код после заголовка на отдельных страницах сообщений? Получать все сообщения, у которых нет специального настраиваемого поля, без использования подзапроса get_posts только дети от определенных родителей

Изменить название метабокса

Я пытаюсь создать функцию, которая позволила бы мне изменить название установленного мета-поля (т. Е. Изменить название Meta Box «Авторы» на «Команда» и т. Д.).

Я не хотел использовать JS или должен был отключить оригинальный мета-ящик и повторно добавить его.

Я начал с следующего в соответствии с другим потоком, который перечислил код следующим образом:

// hook to the 'add_meta_boxes' action add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles($post_type, $post)) { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want } 

Я застрял на части, чтобы «прокрутить массив и изменить названия, которые вы хотите».

Какой был бы лучший способ сделать это? Использование foreach для цикла? Или сценарий Switch / Case? Я довольно новичок в этом, может ли кто-нибудь представить пример того, как это сделать?

Обновление: пример Стивена Харриса действительно работает для Core Meta (спасибо!):

 add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles() { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want $wp_meta_boxes['post']['normal']['core']['authordiv']['title']= 'Team Member'; } 

Обновление: исправлено для пользовательских мета

Чтобы заставить это работать с вашим обычным мета-изменением вашего add_action следующим образом, чтобы он запускал ваш код заголовка изменения после добавления мета-поля:

 add_action('add_meta_boxes', 'change_meta_box_titles', 999); 

Solutions Collecting From Web of "Изменить название метабокса"

Улучшенный ответ

Я решил пересмотреть этот вопрос, поняв, насколько это неудобно.

Лучшее решение – удалить метабокс, а затем снова добавить его, указав альтернативный заголовок. Вот пример для post post-type.

 add_action( 'add_meta_boxes_post', 'wpse39446_add_meta_boxes' ); function wpse39446_add_meta_boxes() { remove_meta_box( 'authordiv', 'post', 'core' ); add_meta_box( 'authordiv', __('Team Member','wpse39446_domain'), 'post_author_meta_box', 'post', 'core', 'high' ); } 

Примечание. Если вы делаете это для неосновного метабокса, вам необходимо убедиться, что обратный вызов вызывается после добавления метабокса, указав более высокий приоритет.


Итак, $wp_meta_boxes имеет много вложенных массивов

Для ваших целей:

 $wp_meta_boxes['post_type']['normal']['core']['authordiv']['title']= 'teams'; 

(NB. Я не уверен, переданы ли какие-либо аргументы этому действию …:

 add_action('add_meta_boxes', 'change_meta_box_titles'); function change_meta_box_titles() { global $wp_meta_boxes; // array of defined meta boxes // cycle through the array, change the titles you want } 

На самом деле структура массива сложнее. Я обновил свой код. Я тестировал это, и он работает: D (просто убедитесь, что вы изменили 'post_type' на тип сообщения, например «post»).

Строго структура массива – это пост-тип> приоритет> ядро> идентификатор метаболизма.

Если вы хотите увидеть массив для себя, внутри вашей функции используйте:

 echo '<pre>'; print_r($wp_meta_boxes); echo '</pre>'; wp_die(''); 

Я знаю, что это старый вопрос, но для этого есть фильтр. Вы добавили бы в functions.php или настраиваемую функциональность вашей functions.php функцию, подключенную к post_type_labels_{$post_type}

Возьмем, к примеру, что у нас есть пользовательский тип сообщения, называемый band и мы хотим изменить ярлыки с изображением на «Band Photo». Функция будет выглядеть примерно так:

 function wpse39446_modify_featured_image_labels( $labels ) { $labels->featured_image = __( 'Band Photo', 'textdomain' ); $labels->set_featured_image = __( 'Set Band Photo', 'textdomain' ); $labels->remove_featured_image = __( 'Remove Band Photo', 'textdomain' ); $labels->use_featured_image = __( 'Use as Band Photo', 'textdomain' ); return $labels; } add_filter( 'post_type_labels_band', 'wpse39446_modify_featured_image_labels', 10, 1 ); 

ref: https://developer.wordpress.org/reference/hooks/post_type_labels_post_type/

Afaik, лучше всего было бы подключить функцию к крюку непосредственно перед созданием мета-поля:

 function alter_meta_box_titles( $post_type, $priority, $post ) { global $wp_meta_boxes; // Do check if you're on the right $post_type, $priority, etc. // Then alter the output foreach( $wp_meta_boxes as $index => $box ) $wp_meta_boxes[ $index]['title'] = 'CUSTOM TITLE'; return $wp_meta_boxes; } add_action( 'do_meta_boxes', 'alter_meta_box_titles', 0, 3); 

Ладно … Это немного взломанно, но я подумал, что это умно. В основном, вы просто используете встроенные функции языка, чтобы изменить то, что вам нравится. До тех пор, пока вы знаете исходное слово или слова, которые хотите изменить, и они были правильно вызваны в коде с чем-то вроде __('text in here') , вы можете изменить их на все, что захотите.

Я когда-то использовал его, чтобы изменить мета-окно «Выдержки» на другое имя (вместе с описанием внутри), потому что моя тема использовала его для чрезвычайно маленьких фрагментов текста. Взгляни:

 /** * Here are some customizations that change text output via the gettext filter. * This was intended for translating themes to other languages, but why not * use it for more customization? * * @link http://codex.wordpress.org/Plugin_API/Filter_Reference/gettext * */ add_filter( 'gettext', 'change_excerpt_name', 20, 3 ); function change_excerpt_name( $translated_text, $text, $domain ) { if( $_GET['post_type'] == 'events' ) { switch ( $translated_text ) { case 'Excerpt' : $translated_text = 'Quick Summary'; break; case 'Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="%s">Learn more about manual excerpts</a>.' : $translated_text = 'Use this field to REALLY condense the description of this event. Keep it around 12 words or less if possible. If you skip this field, the first few words in the area above will be used instead.'; break; } } return $translated_text; } 

Как оказалось, я был не единственным, кто мог подумать об этом. Сюрприз. Вот статья, обсуждающая ту же идею , с другим методом использования gettext.

Поскольку WordPress 4.4, $ screen arg может быть массивом, который значительно упрощает массовые добавления или изменения мета-полей.

Следующий код изменяет название мета-поля «Автор» на «Редактор» на страницах, сообщениях, вложениях и всех настраиваемых типах сообщений независимо от того, сколько их добавлено или когда они добавлены на ваш сайт.

 add_action('do_meta_boxes', 'my_customize_meta_boxes'); //using do_meta_boxes also allows plugin metaboxes to be modified function my_customize_meta_boxes(){ $post_types = get_post_types(); remove_meta_box( 'authordiv', $post_types, 'normal' ); add_meta_box('authordiv', __('Editor'), 'post_author_meta_box', $post_types, 'side', 'default'); } 

Это немного взломанный, но для тех, кто нуждается в простом решении CSS, используйте это:

 .meta-box-sortables #your-metabox-id .ui-sortable-handle span { color: transparent; } .meta-box-sortables #your-metabox-id .ui-sortable-handle span:before { content: 'Your new title'; display: inline-block; color: #000; } 

Просто замените свой-metabox-id своим. 🙂

(обратите внимание: я обычно добавляю admin.css через functions.php, вот где я управляю некоторыми стилями администратора wp)