custom-post-types – Cambiar el texto en el botón Publicar

Pregunta:

¿Hay alguna manera de cambiar el texto del botón de publicar en un tipo de publicación personalizada para decir algo diferente? Por ejemplo, Guardar en lugar de Publicar. ¿Y también quitar el botón de borrador?

Respuesta:

Si busca en /wp-admin/edit-form-advanced.php , encontrará el cuadro meta:

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

Tenga en cuenta el __('Publish') : la función __() lleva a translate() donde obtiene el filtro 'gettext' .

Hay dos formas de manejar su problema: 1. Dirija la cadena en una única función especializada (¡asegúrese de hacer coincidir el dominio de texto correcto!) O 2. Utilice un enfoque más genérico.

@Rarst acaba de publicar la versión 1, así que agregaré la versión 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' )
    )
);

No es necesario utilizar el código como complemento. Incluirlo en el functions.php de tu tema será suficiente.

Actualizar

Para eliminar el botón Guardar original (no estoy seguro de qué es el botón 'borrador'), agregue el siguiente código a su plugin 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
}

Sí, es feo.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım