web-dev-qa-db-fra.com

Renommer le bouton d'insertion dans la fenêtre de téléchargement de média

J'ai plusieurs types de messages différents, chacun avec un téléchargement de média. Ce que je veux faire, c'est renommer le bouton "Insérer dans le message" afin qu'il corresponde aux messages personnalisés. Par exemple - type de message personnalisé - "récompense" et la boîte de téléchargement de média comportera le bouton "insérer dans la récompense".

Des idées?

1
schizdazzle

Je pense que ce n'est pas si facile, sur la page des médias dans la zone Admin, il n'est pas possible de vérifier le post_type de votre CPT. Normalement, vous pouvez changer les chaînes avec la petite source suivante, un exemple.

if ( is_admin() )
    add_filter( 'gettext', array( 'fb_string_translate', 'gettext_filter' ), 10, 1 );
class fb_string_translate {

    static function gettext_filter( $str ) {

        $from_to = array();

        $post_type = get_post_type();
        if ( 'my_post_type' === $post_type )
            $from_to = array( 'Insert into Post' => 'Insert into Test' );

        return strtr($str, $from_to);
    }

}

Mais il est important, que vous vérifiiez, sur quelle page est l'auteur dans admin et sur l'iframe de la page média, il n'est pas possible de lire le post_type; peut-être trouvez-vous cette variable, ce qui est possible avec l'exemple de source.

2
bueltge

[mise à jour]
Au début, j’ai adopté une approche idiote et je réécris complètement ma réponse pour cette raison le message de Stephen Harris . Résultat: il est beaucoup plus compact maintenant.

J'ai essayé d'adapter le filtre de @ bueltge dans mon code, mais je n'y suis pas parvenu.

Ma solution utilise jQuery pour manipuler les chaînes.
Dans l'onglet De l'ordinateur , j'ajoute une fonction à exécuter toutes les demi-secondes pour pouvoir modifier le texte du bouton lorsqu'il apparaît (après le téléchargement).

Cet exemple traite de 2 CPT: "movie" et "woo_estate".

/*
 * Change the text "Use this Image"/"Insert into Post" on the upload window to "Insert into CPT"
*/
function wpse_26585_script_enqueuer(){
    global $current_screen;
    $post_id = !empty( $_GET['post_id'] ) ? (int) $_GET['post_id'] : 0;
    $post_type = get_post_type($post_id);

    if( 'media-upload' == $current_screen->id && ('movie' == $post_type || 'woo_estate' == $post_type) ) {

        // VAR DECLARATION
        $select = "";
        if('movie' == $post_type)       $select = "Insert into Movie";
        if('woo_estate' == $post_type)  $select = "Insert into Property";

        // FIND CURRENT TAB
        $tab     = isset($_GET['tab']) ? $_GET['tab'] : "type";

        // CHANGE NAMES IN UPLOAD MEDIA TAB and UPDATE "SAVE ALL CHANGES" LINK TO INCLUDE OUR PARAMETER IN THE QUERY
        $jquery = ('type' == $tab) ? 'var refreshUpload = setInterval(function(){$("#media-items").each(setButtonNames);},500);' : '$("#media-items").each(setButtonNames);';

        //CHANGE BUTTON NAMES
        echo <<<HTML
        <script type="text/javascript">
        function setButtonNames() {
            jQuery(this).find('.savesend .button').val('{$select}');
        }
        jQuery(document).ready(function($){            
            {$jquery}
        });
        </script>
HTML;
    }
}
add_action('admin_head', 'wpse_26585_script_enqueuer');
0
brasofilo