web-dev-qa-db-fra.com

Ajouter mon propre bouton à côté de "Options d'écran" et "Aide" dans l'admin

Je voudrais ajouter mon propre lien bouton à côté de ces deux. Est-ce possible?

enter image description here

6
agileapricot

Je ne sais pas pourquoi cette question a été rejetée si rapidement. C'est en fait une question valide, et il serait vraiment utile de pouvoir ajouter un bouton, ou même de modifier le contenu de chaque option d'écran.

Je sais que c'est une vieille question, mais ...

Si vous souhaitez simplement y ajouter un bouton, celui-ci renverrait ailleurs. Vous pouvez simplement ajouter du jQuery pour ajouter le bouton.

jQuery("#screen-meta-links").append('<div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle" style=""><a href="link.html" id="contextual-help-link" class="show-settings">My New Button</a></div>');

Maintenant, si vous voulez réellement que ce bouton fonctionne de la même manière que les autres boutons, vous devez creuser dans les fichiers admin.

Le fichier que vous recherchez est:

wordpress\wp-admin\comprend\screen.php

3
gdaniel

Le HTML

echo '<div id="screen-meta-links">';
echo ' <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">';
echo '  <a href="#" id="your-own-button" class="show-settings">Text for your button</a>';
echo ' </div>';
echo '</div>';
echo '<br style="clera:both" />';

echo '<div id="your-button-content" class="your-button-hide">';
// your content goes here
echo '</div>';

Et vous avez besoin de JavaScript personnalisé

jQuery(document).ready( function($){

$( '.your-button-hide' ).each(
  function(e){
    $( this ).hide();
  }
);

$( '#your-own-button' ).click(
  function( e ){
    e.preventDefault();

    $( '#your-button-content' ).toggle();

    var hasclass = $( '#your-own-button' ).hasClass( 'screen-meta-active' );
    if( hasclass ){
      $( '#your-own-button' ).removeClass( 'screen-meta-active' );
    } else {
      $( '#your-own-button' ).addClass( 'screen-meta-active' );
    }
  }
);

});

La partie HTML ajoute le bouton, le JavaScript ajoute la fonctionnalité.

Le code complet pourrait ressembler à ceci:

add_action( 'admin_menu', 'register_backendpage', 10, 0 );

function register_backendpage() {
  $pagehook = add_management_page(
    'Your backend page',
    'Your backend page',
    'manage_options',
    'a-menu-slug-of-your-choice',
    'backendpage_callback',
    false,
    'bottom'
  );

  add_action( 'load-' . $pagehook, 'enqueue_button_script', 10, 0 );
}

function backendpage_callback() {

    // output your button here, see code above

    echo '<div class="wrap">';
    /*
     * the rest of your page content
     */
}

function enqueue_button_script() {
    // the js above
    wp_enqueue_script( 'your-button-script', ... );
}
3
Ralf912

J'ai écrit une solution simple et exacte pour ajouter votre propre bouton:

class TmMS_Controller extends TmMS {

    //...

    public function init() {
        //...            
        add_action('admin_footer', array(&$this, 'admin_footer'));
        // ...
    }



    public function admin_footer() {
    if (empty($_GET) OR (isset($_GET['post_type']) AND $_GET['post_type'] == 'post')) {
        if ($_SERVER['SCRIPT_URI'] == admin_url('edit.php')) {
            ?>
            <script type="text/javascript">
                jQuery(function() {
                    jQuery('#screen-meta-links').append('<div class="hide-if-no-js screen-meta-toggle" id="mail-subscriber-options-link-wrap" style=""><a aria-expanded="false" aria-controls="screen-options-wrap" class="show-settings" id="mail-subscriber-settings-link" href="#mail-subscriber-options-wrap">Newsplus</a></div>');
                    var mail_subscriber_options_wrap = jQuery('#mail_subscriber_options').html();
                    jQuery('#mail_subscriber_options').remove();
                    jQuery('#screen-meta').append(mail_subscriber_options_wrap);
                });

            </script>
            <?php
            $this->draw_prepared_posts_content();
        }
    }
}

    public function draw_prepared_posts_content() {
        $data = array();

        echo $this->draw_html('admin/prepared_posts_content', $data);
    }

    // ...

}

$tm_ms_controller = new TmMS_Controller();
add_action('init', array(&$tm_ms_controller, 'init'), 1, 999);

Ajouter des instructions css quelque part:

#mail-subscriber-options-link-wrap {
float: right;
height: 23px;
padding: 0;
margin: 0 0 0 6px;
font-family: sans-serif;
}

#mail-subscriber-options-link-wrap {
    -webkit-border-bottom-left-radius: 3px;
    -webkit-border-bottom-right-radius: 3px;
    border-bottom-left-radius: 3px;
    border-bottom-right-radius: 3px;
}

/* screen options and help tabs */
#mail-subscriber-options-link-wrap {
    border-right: 1px solid #d1e5ee;
    border-left: 1px solid #d1e5ee;
    border-bottom: 1px solid #d1e5ee;
    background: #eff8ff;
    background-image: -webkit-gradient(linear, left bottom, left top, from(#def1ff), to(#eff8ff));
    background-image: -webkit-linear-gradient(bottom, #def1ff, #eff8ff);
    background-image:    -moz-linear-gradient(bottom, #def1ff, #eff8ff);
    background-image:      -o-linear-gradient(bottom, #def1ff, #eff8ff);
    background-image: linear-gradient(to top, #def1ff, #eff8ff);
}

#mail-subscriber-options-posts{
    padding: 0;
    margin: 0;
}

Écrans: Result of script workingcode architecturefunction to generate html

1
realmag777

Est-ce possible?

Pas sans JavaScript.

Sera-t-il possible?

Ces deux onglets seront convertis en un menu dans la barre d’administration dans WP 3.3. Découvrez la version bêta.

0
scribu