Intereting Posts
Сделать Textarea a TinyMCE (окно редактора) Загрузка изображения с внешнего интерфейса с помощью иконок Нечетный файл сценария пытается загрузить Переименование темы, так что она помогает SEO и используемая тема скрыта Как установить файл .MO (языковой файл) для использования в качестве части темы? Как ограничить определенные типы сообщений чтением или добавлением определенных пользовательских ролей (например, автора)? Изменение названия в нижнем регистре Как узнать, есть ли у пользователя блог в WordPress Multisite? загрузка javascript CDN с локальным резервным (не jQuery) В чем разница между home_url () и site_url () нажмите событие, чтобы показать что-то после того, как ajax не сработает Регистрация разных почтовых форматов для публикации в блоге и CPT Как обновить переменный запас продукта с кодом Как отобразить число просмотров страниц в сообщении? Количество элементов в меню

Измените текст на кнопке «Опубликовать»

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

Solutions Collecting From Web of "Измените текст на кнопке «Опубликовать»"

Если вы посмотрите в /wp-admin/edit-form-advanced.php , вы найдете мета-окно:

 add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core'); 

Обратите внимание на __('Publish') – функция __() приводит к translate() где вы получаете фильтр 'gettext' .

Существует два способа решения вашей проблемы: 1. Направьте строку в одной специализированной функции (обязательно соответствуйте правильному текстовому домену!) Или 2. используйте более общий подход.

@Rarst только что опубликовал версию 1, поэтому я добавлю версию 2. 🙂

 <?php /* Plugin Name: Retranslate Description: Adds translations. Version: 0.1 Author: Thomas Scholz Author URI: http://toscho.de License: GPL v2 */ class Toscho_Retrans { // store the options protected $params; /** * Set up basic information * * @param array $options * @return void */ public function __construct( array $options ) { $defaults = array ( 'domain' => 'default' , 'context' => 'backend' , 'replacements' => array () , 'post_type' => array ( 'post' ) ); $this->params = array_merge( $defaults, $options ); // When to add the filter $hook = 'backend' == $this->params['context'] ? 'admin_head' : 'template_redirect'; add_action( $hook, array ( $this, 'register_filter' ) ); } /** * Conatiner for add_filter() * @return void */ public function register_filter() { add_filter( 'gettext', array ( $this, 'translate' ), 10, 3 ); } /** * The real working code. * * @param string $translated * @param string $original * @param string $domain * @return string */ public function translate( $translated, $original, $domain ) { // exit early if ( 'backend' == $this->params['context'] ) { global $post_type; if ( ! empty ( $post_type ) && ! in_array( $post_type, $this->params['post_type'] ) ) { return $translated; } } if ( $this->params['domain'] !== $domain ) { return $translated; } // Finally replace return strtr( $original, $this->params['replacements'] ); } } // Sample code // Replace 'Publish' with 'Save' and 'Preview' with 'Lurk' on pages and posts $Toscho_Retrans = new Toscho_Retrans( array ( 'replacements' => array ( 'Publish' => 'Save' , 'Preview' => 'Lurk' ) , 'post_type' => array ( 'page', 'post' ) ) ); 

Вам не нужно использовать код в качестве плагина. В том числе его в функции functions.php вашей темы будет достаточно.

Обновить

Чтобы удалить исходную кнопку «Сохранить» (не уверен, что означает «черновик»), добавьте следующий код в свой файл functions.php / a:

 add_action( 'admin_print_footer_scripts', 'remove_save_button' ); function remove_save_button() { ?> <script> jQuery(document).ready(function($){$('#save-post').remove();}); </script><?php } 

Да, это уродливо.

Код для предложения hakre использовать фильтр перевода будет примерно таким:

 add_filter( 'gettext', 'change_publish_button', 10, 2 ); function change_publish_button( $translation, $text ) { if ( $text == 'Publish' ) return 'Save'; return $translation; } 

Это не полный ответ, а некоторые направления: любой отображаемый текст превосходит фильтр трансляции и поэтому может быть изменен в функции обратного вызова (hook). Поэтому, если крючок зарегистрирован только на странице, где вы хотели бы изменить это, работа выполнена.

Кнопка проекта может быть «удалена», спрятав ее с помощью CSS. CSS может быть введен в <head> -tag администратора с другим обратным вызовом. Я думаю, что для этого фильтр называется admin_head . Это как-то грязно, поскольку кнопка все еще существует, например, если пользователь отключил CSS.

Другой подход – это отменить регистрацию метабокса, а затем перерегистрировать тот же самый ящик с разными значениями, именовать текст публикации.

См. Обсуждение, которое я имел здесь, касающийся перемещения мета-поля, вы должны иметь возможность применить нечто подобное, чтобы переименовать текст публикации.

Для согласованности, я предполагаю, вы предпочли бы использовать «Сохранить» вместо «Опубликовать» во всем WordPress, а не только по тексту кнопки.

Мета-бокс

Почтовый список

Основываясь на решении, предоставленном @Rarst, я расширил код, чтобы он перевел многие (все?) Другие экземпляры слова «Опубликовать» в соответствующий вариант «Сохранить».

 add_filter("gettext", "translate_publish_post_status", 10, 2); add_filter("ngettext", "translate_publish_post_status_number", 10, 5); add_filter("ngettext_with_context", "translate_publish_post_status_number", 10, 6); function translate_publish_post_status($translation, $text) { switch($text) { case "Publish": return "Save"; case "Published on: <b>%1\$s</b>": return "Saved on: <b>%1\$s</b>"; case "Publish <b>immediately</b>": return "Approve <b>immediately</b>"; case "Publish on: <b>%1\$s</b>": return "Approve on: <b>%1\$s</b>"; case "Privately Published": return "Privately Saved"; case "Published": return "Saved"; case "Save & Publish": return "Save"; //"Double-save"? :) default: return $translation; } } function translate_publish_post_status_number($translation, $single, $plural, $number, $domain) { if($translation == "Published <span class=\"count\">(%s)</span>") { return "Saved <span class=\"count\">(%s)</span>"; } return $translation; } 

Для удаления кнопки Черновик ответ, заданный @toscho, содержит хорошее решение.

Вы могли бы просто найти кнопку через jQuery и поменять текстовый узел на что-то еще. Это будет кусок пирога.

Намного более чистое и легкое решение.

 function change_publish_btn_txt() { echo "<script type='text/javascript'>jQuery(document).ready(function(){ jQuery('#publish').attr('value', 'Your Custom Text'); });</script>"; } add_action('admin_footer-post-new.php', 'change_publish_btn_txt', 99);