¿Cómo puedo filtrar la descripción del metabox del extracto en el administrador?

4

Quiero cambiar el valor predeterminado "Los extractos son resúmenes opcionales hechos a mano de su contenido que se pueden usar en su tema. Obtenga más información sobre los extractos manuales". el texto de ayuda que se encuentra debajo del área de ingreso del extracto a algo más significativo para mi tipo de publicación personalizada.

He hecho algo similar con Post Title, usando un filtro de "traducción", pero ¿cómo haría esto con el extracto de post?

Aquí está mi código actual:
add_filter('gettext', 'custom_rewrites', 10, 4);
function custom_rewrites($translation, $text, $domain) {

    global $post;

    $translations = &get_translations_for_domain($domain);
    $translation_array = array();

    switch ($post->post_type) {
        case 'model':
            $translation_array = array(
                'Enter title here' => 'Enter model name here',
                'Excerpt' => "Byline",
                'Excerpts are optional hand-crafted summaries of your content that can be used in your theme.' => "Foobar"
            );
            break;
    }

    if (array_key_exists($text, $translation_array)) {
        return $translations->translate($translation_array[$text]);
    }

    return $translation;
}

¿La tercera traducción no funciona?

    
pregunta Amanda 07.02.2011 - 14:18

3 respuestas

5

Esta descripción es generada por la función post_excerpt_meta_box() y no se pasa a través de ningún filtro explícito. Sin embargo, tiene una función _e() relacionada con la traducción y, por lo tanto, pasa a través del filtro gettext (que de su pregunta ya están familiarizados con).

En cuanto a limitarlo a su CPT, creo que el tipo de publicación actual en admin se mantiene en la variable $post_type global que puede verificar.

    
respondido por el Rarst 07.02.2011 - 15:32
1

Respuesta tardía

Sólo filtros de traducción

Hay filtros predeterminados para el título y el contenido, pero ninguno para las ventanas de extractos. Básicamente, tiene las opciones: eliminar el meta box predeterminado y agregar uno nuevo (modificado) O filtrar la cadena a través del filtro gettext .

Meta Box

Básicamente, usted conoce el concepto de eliminar un meta box (si no es así, simplemente busque en este mismo sitio). Luego simplemente agregue una nueva meta box que sea exactamente igual, pero con una IU ligeramente modificada en su devolución de llamada personalizada.

Aquí está el original del núcleo como referencia:

function post_excerpt_meta_box($post) {
?>
<label class="screen-reader-text" for="excerpt"><?php _e('Excerpt') ?></label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt; // textarea_escaped ?></textarea>
<p><?php _e('Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>'); ?></p>
<?php
}

Gettext

El punto con esto es que este filtro se activa para todas y cada una de las cadenas traducibles en la interfaz de usuario (que es mucho). En el siguiente complemento, verá cómo modificar el marcador de posición predeterminado del tipo de publicación, el contenido predeterminado y cómo conectarse tan tarde como sea posible para modificar esta cadena, y luego im. quite el filtro para que no se ralentice cada filtro posterior.

<?php
/** Plugin Name: (#72418) "kaiser" Alter Post Type UI strings */

if ( ! class_exists( 'WPSE72418_alter_ptui_strings' ) )
{
    add_action( 'plugins_loaded', array( 'WPSE72418_alter_ptui_strings', 'init' ) );
class WPSE72418_alter_ptui_strings
{
    static protected $instance;

    public $post_type = 'post';

    public $to_replace = 'Excerpts are optional hand-crafted summaries of your content that can be used in your theme. <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>';

    static public function init()
    {
        null === self :: $instance AND self :: $instance = new self;
        return self :: $instance;
    }

    public function __construct()
    {
        add_action( 'init', array( $this, 'add_post_type' ) );

        add_filter( 'enter_title_here', array( $this, 'alter_title_string' ), 10, 2 );

        add_filter( 'default_content', array( $this, 'add_editor_default_content' ) );

        add_action( 'admin_menu', array( $this, 'add_excerpt_note_filter' ) );
    }

    public function alter_title_string( $title, $post )
    {
        if ( $this->post_type !== $post->post_type )
            return $title;

        return $title = __( 'Enter TITLE name here', 'your_textdomain' );
    }

    public function add_editor_default_content( $content )
    {
        if ( $this->post_type !== get_current_screen()->post_type )
            return $content;

        return __( 'Enter the POST TYPES long description here.', 'your_textdomain' );
    }

    public function add_excerpt_note_filter( $post )
    {
        add_filter( 'gettext', array( $this, 'alter_excerpt_mb_note' ), 10, 3 );
    }

    public function alter_excerpt_mb_note( $l10n, $string, $domain )
    {
        // Remove when not on the needed post type page
        if (
            ! is_null( get_current_screen() )
            AND $this->post_type !== get_current_screen()->post_type 
            )
        {
            remove_filter( current_filter(), array( $this, __FUNCTION__ ) );
            return;
        }

        // Remove when done
        if ( $this->to_replace === $string )
        {
            remove_filter( current_filter(), array( $this, __FUNCTION__ ) );
            return __( 'NEW FOOTNOTE', 'your_textdomain' );
        }

        return $l10n;
    }
} // END Class WPSE72418_alter_ptui_strings

} // endif;
    
respondido por el kaiser 13.11.2012 - 12:54
-2

Gracias por esto. También es posible en estos días aplicar un filtro a la solicitud de Título usando enter_title_here. ¡Disfruta!

add_filter ('enter_title_here', your_filter);

Como es de esperar.

    
respondido por el Alex 23.03.2011 - 13:49

Lea otras preguntas en las etiquetas