it-swarm.com.de

Der beste Weg, um ausgewählten Bildtext nach einem benutzerdefinierten Beitragstyp zu filtern?

Ich versuche, die Textlinks "Ausgewähltes Bild festlegen", "Ausgewähltes Bild entfernen" und "Als ausgewähltes Bild verwenden" eines benutzerdefinierten Beitragstyps für mein Plugin zu ändern Meteor Slides .

Ich habe den Filter-Hook "admin_post_thumbnail_html" gefunden und einen Code gefunden, der "Ausgewähltes Bild festlegen" in "Dia-Bild festlegen" nur für den Dia-Beitragstyp ändert:

    if ((isset($_GET['post_type']) && $_GET['post_type'] == 'slide') || (isset($post_type) && $post_type == 'slide')) {

    add_filter( 'admin_post_thumbnail_html', 'meteorslides_set_featured', 9999, 1 );

    function meteorslides_set_featured( $content ) {

        return str_replace( 'Set featured image', 'Set slide image', $content );

    }

}

Ich habe dasselbe für "Ausgewähltes Bild entfernen" versucht und es hat nicht funktioniert. Ich kann diesen Code jedoch verwenden, um diese Änderung für all post-Typen vorzunehmen:

    add_filter( 'admin_post_thumbnail_html', 'meteorslides_remove_featured', 9999, 1 );

function meteorslides_remove_featured( $content ) {

    return str_replace( 'Remove featured image', 'Remove slide image', $content );

}

Hat jemand irgendwelche Gedanken darüber, warum sich das Filtern von "Ausgewähltes Bild festlegen" anders verhält als "Ausgewähltes Bild entfernen"?

Das Ändern von "Als empfohlenes Bild verwenden" scheint etwas kniffliger zu sein. Es gibt keinen Filter dafür. Aber ich habe in Trac ein Ticket gefunden wo jemand anderes versucht hat, dasselbe zu tun, und es gab einen Vorschlag, den Übersetzungsstring zu filtern.

Diese Lösung hat ziemlich gut funktioniert. Ich konnte den Text "Als empfohlenes Bild verwenden" ändern, aber er ist wieder für alle Beitragstypen verfügbar und ich bin nicht sicher, wie ich ihn eingrenzen soll:

    add_filter( 'gettext', 'meteorslides_use_featured', 9999, 4 );

function meteorslides_use_featured( $translation, $text, $domain ) {

    $translations = &get_translations_for_domain( $domain );

    if ( $text == 'Use as featured image' ) {

        return $translations->translate( 'Use as slide image' );

    }

    return $translation;

}

Das überlagerte Medienfenster scheint nicht zu "wissen", dass ich es von einem bestimmten Beitragstyp lade, daher bin ich mir nicht sicher, ob diese Änderung durchführbar ist.

Ich habe hier eine Antwort gefunden, die zeigte, wie man diese Links mit jQuery ändert . Ich würde lieber Filter verwenden, aber wenn ich herausfinden könnte, wie man das auf einen Beitragstyp beschränkt, wäre das auch in Ordnung!

Ich habe mir einige andere Plugins angesehen, die vorgestellte Bilder verwenden, aber ich konnte keine finden, die alle diese Zeichenfolgen geändert haben. Hat jemand das geschafft?

3
JLeuze

Unabhängig davon, ob Sie die Route PHP oder jQuery wählen, empfehle ich Ihnen, Ihre Filter einzurichten oder Ihr Javascript im Hook admin_head-post[-new].php oder admin_print_scripts-post[-new].php einzuordnen. Dort können Sie sicher sein, dass die globale Variable $post_type gesetzt ist, und prüfen, ob es sich um eine slide handelt. Da der Post-Thumbnail-Code nach diesen Hooks aufgerufen wird, können Sie Ihre Filter in diesem Hook einrichten und sie werden ausgeführt. Etwas wie das:

add_action( 'admin_head-post-new.php', 'wpse4270_add_filters_for_slide' );
add_action( 'admin_head-post.php', 'wpse4270_add_filters_for_slide' );
function wpse4270_add_filters_for_slide()
{
    if ( 'slide' == $GLOBALS['post_type'] ) {
        add_filter( 'admin_post_thumbnail_html', 'meteorslides_set_featured', 9999, 1 );
        add_filter( 'admin_post_thumbnail_html', 'meteorslides_remove_featured', 9999, 1 );
        add_filter( 'gettext', 'meteorslides_use_featured', 9999, 4 );
    }
}
4
Jan Fabry

Wie bereits erwähnt, können Sie str_replace () im Filter admin_post_thumbnail_html ausführen.

function changeFeaturedImageLinks($content)
{
    $content = str_replace(__('Set featured image'), __('YOUR_CUSTOM_TEXT'), $content);
    $content = str_replace(__('Remove featured image'), __('YOUR_CUSTOM_TEXT'), $content);

    return $content;
}

add_filter('admin_post_thumbnail_html', 'changeFeaturedImageLinks');
1

Ich habe dies erreicht, indem ich mich zuerst in die Aktion 'current_screen' eingebunden und festgestellt habe, ob mein post_type festgelegt wurde, und dann den Filter hinzugefügt habe. Möglicherweise gibt es einen kürzeren Weg, aber dies funktioniert, wenn Sie den Text nur für einen bestimmten Beitragstyp ändern müssen.

public function set_featured_image_filter(){
    $screen = get_current_screen();
    if( isset($screen->post_type) && $screen->post_type == 'advertisment'){
        add_filter( 'admin_post_thumbnail_html', 'replace_featured_image_text', 10, 1);
    }
}
add_action('current_screen', 'set_featured_image_filter');

public function replace_featured_image_text( $content ) {
        return str_replace( 'Set featured image', __('Set Advertisment image', $this->rns_slingshot_plugin), $content );
    }
0
rfair404