Есть ли способ изменить текст кнопки публикации в пользовательском типе сообщения, чтобы он говорил по-другому? Например, «Сохранить вместо публикации». А также убрать кнопку черновика?
источник
Есть ли способ изменить текст кнопки публикации в пользовательском типе сообщения, чтобы он говорил по-другому? Например, «Сохранить вместо публикации». А также убрать кнопку черновика?
Если вы посмотрите в /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
}
Да, это некрасиво.
post_submit_meta_box()
что ее содержимое просто выгружается. Нет фильтра вообще. Javascript илиob_start()
может решить это. Оба не очень элегантно.Код для предложения Хакре использовать фильтр перевода будет выглядеть примерно так:
источник
Это не полный ответ, но некоторые указания: любой отображаемый текст превосходит фильтр перевода и поэтому может быть изменен в функции обратного вызова (ловушка). Так что, если хук зарегистрирован только на той странице, где вы хотели бы это изменить, работа выполнена.
Кнопка «Черновик» может быть «удалена», скрывая ее с помощью CSS. CSS может быть введен в
<head>
-tag администратора с помощью другого обратного вызова. Я думаю, что фильтр призванadmin_head
для этого. Это как-то грязно, так как кнопка все еще есть, например, если пользователь выключает CSS.источник
Для согласованности, я предполагаю, что вы предпочитаете использовать «Сохранить» вместо «Публикация» в Wordpress, а не только в тексте кнопки.
Основываясь на решении, предоставленном @Rarst, я расширил код, чтобы он переводил многие (все?) Другие экземпляры слова «Опубликовать» в соответствующий вариант «Сохранить».
Для удаления кнопки Черновик ответ @toscho содержит хорошее решение.
источник
%1$s
на%1\$s
. Или отключение уведомлений / предупреждений позволит скрыть эти ошибки.Другой подход состоит в том, чтобы отменить регистрацию метабокса, а затем перерегистрировать этот же ящик с разными значениями, а именно, опубликовать текст.
Посмотрите обсуждение, которое я провел здесь о перемещении мета-блока, вы сможете применить нечто похожее, чтобы переименовать этот Опубликовать текст.
источник
Вы можете просто найти кнопку через jQuery и заменить текстовый узел на что-то другое. Это был бы кусок пирога, чтобы сделать.
источник
Гораздо чище и проще решение.
источник