it-swarm.com.de

Wie filtere ich die Metabox-Beschreibung des Ausschnitts in admin?

Ich möchte die Standardeinstellung ändern. "Auszüge sind optionale handgefertigte Zusammenfassungen Ihrer Inhalte, die in Ihrem Thema verwendet werden können. Weitere Informationen zu manuellen Auszügen." Hilfetext unterhalb des Eingabebereichs "Auszug", der für meinen benutzerdefinierten Beitragstyp aussagekräftiger ist.

Ich habe etwas Ähnliches mit Post Title gemacht, indem ich einen "Übersetzungs" -Filter verwendet habe, aber wie würde ich das mit dem Post-Auszug machen?

Hier ist mein aktueller Code:
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;
}

Die dritte Übersetzung funktioniert nicht?

4
Amanda

Diese Beschreibung wird von der Funktion post_excerpt_meta_box() generiert und nicht durch explizite Filter geleitet. Es wird jedoch von der übersetzungsbezogenen Funktion _e() wiedergegeben und durchläuft daher den Filter gettext (den Sie aus Ihrer Frage bereits kennen).

Bezüglich der Beschränkung auf Ihr CPT denke ich, dass der aktuelle Beitragstyp in admin in einer globalen $post_type -Variablen gespeichert ist, die Sie überprüfen können.

5
Rarst

Späte Antwort

Nur Übersetzungsfilter

Es gibt Standardfilter für den Titel und den Inhalt, aber keine für die Auszugsfenster. Sie haben also im Grunde genommen folgende Möglichkeiten: Entfernen Sie die Standard-Meta-Box und fügen Sie eine neue (geänderte) hinzu. OR filtern Sie den String über den Filter gettext.

Meta Box

Grundsätzlich kennen Sie das Konzept des Entfernens einer Meta-Box (wenn nicht, suchen Sie einfach auf dieser Site danach). Fügen Sie dann einfach ein neues Meta-Feld hinzu, das genau dasselbe ist, jedoch eine leicht geänderte Benutzeroberfläche in Ihrem benutzerdefinierten Rückruf enthält.

Hier ist das Original vom Kern als Referenz:

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

Der Punkt dabei ist, dass dieser Filter für jede übersetzbare Zeichenfolge in der Benutzeroberfläche ausgelöst wird (was eine Menge ist). Im folgenden Plugin sehen Sie, wie Sie den Platzhalter für den Standardtitel des Beitrags und den Standardinhalt ändern und wie Sie diesen String so spät wie möglich einbinden, um ihn zu ändern - und dann im. Entfernen Sie den Filter, damit er nicht bei jedem späteren Filter langsamer wird.

<?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;
1
kaiser