Existe uma maneira de alterar o texto do botão de publicação em um tipo de postagem personalizado para dizer algo diferente? Por exemplo, salve em vez de publicar. E também remover o botão de rascunho?
fonte
Existe uma maneira de alterar o texto do botão de publicação em um tipo de postagem personalizado para dizer algo diferente? Por exemplo, salve em vez de publicar. E também remover o botão de rascunho?
Se você olhar /wp-admin/edit-form-advanced.php
, encontrará a caixa meta:
add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core');
Observe a __('Publish')
- a função __()
leva para translate()
onde você obtém o filtro 'gettext'
.
Há duas maneiras de lidar com o seu problema: 1. Aborde a string em uma única função especializada (certifique-se de corresponder ao domínio de texto correto!) Ou 2. use uma abordagem mais genérica.
A @Rarst acaba de publicar a versão 1, então adicionarei a versão 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' )
)
);
Você não precisa usar o código como um plug-in. Incluí-lo nas funções do seu tema.php será suficiente.
Para remover o botão Salvar original (não sei ao certo qual é o botão 'rascunho'), adicione o seguinte código ao seu functions.php / a plugin:
add_action( 'admin_print_footer_scripts', 'remove_save_button' );
function remove_save_button()
{
?>
<script>
jQuery(document).ready(function($){$('#save-post').remove();});
</script><?php
}
Sim, é feio.
post_submit_meta_box()
apenas despeja seu conteúdo. Nenhum filtro. Javascript ouob_start()
poderia resolver isso. Ambos não são muito elegantes.O código para a sugestão do hakre de usar o filtro de tradução seria algo como isto:
fonte
Esta não é uma resposta completa, mas algumas orientações: Qualquer texto exibido ultrapassa um filtro de tradução e, portanto, pode ser alterado em uma função de retorno de chamada (gancho). Portanto, se o gancho estiver registrado apenas na página em que você deseja alterar isso, trabalho feito.
O botão de rascunho pode ser "removido" ocultando-o via CSS. O CSS pode ser injetado na
<head>
tag-do administrador com outro retorno de chamada. Eu acho que o filtro é chamadoadmin_head
para isso. De alguma forma, está sujo, pois o botão ainda está lá, por exemplo, se um usuário desativar o CSS.fonte
Por uma questão de consistência, suponho que você prefira usar "Salvar" em vez de "Publicar" no Wordpress, em vez de apenas no texto do botão.
Com base na solução fornecida pelo @Rarst, ampliei o código para converter muitas (todas?) Outras instâncias da palavra "Publicar" na variação apropriada de "Salvar".
Para remover o botão Rascunho, a resposta dada por @toscho contém uma boa solução.
fonte
%1$s
para%1\$s
. Ou, desativar avisos / avisos ocultará esses erros.Outra abordagem seria cancelar o registro da metabox e registrar novamente a mesma caixa com valores diferentes, nomeando o texto de publicação.
Veja a discussão que tive aqui sobre como mover uma caixa de meta. Você deve aplicar algo semelhante para renomear o texto Publicar.
fonte
Você pode encontrar o botão via jQuery e trocar o nó de texto por outra coisa. Isso seria um pedaço de bolo para fazer.
fonte
Solução muito mais limpa e fácil.
fonte