web-dev-qa-db-fra.com

Ajouter un lien de menu (à une page Wordpress) dans le menu Admin/barre latérale

J'essaie d'ajouter un lien, dans la barre latérale Admin, qui renvoie à l'une des pages que j'ai créées dans la section PAGES. Par exemple, j'ai créé une page À PROPOS. Donc, dans la barre latérale, je voudrais un lien vers "À propos de" qui charge ce lien: post.php?post=7&action=edit

Pourquoi? J'essaie de le faire parce que je travaille sur un site Web qui comporte 4 types de messages personnalisés et 3 pages. Les types de publication personnalisés ont des liens dans le menu administrateur. Je pense donc que ce serait une meilleure expérience utilisateur si les 3 pages avaient également des liens directs dans la barre latérale, au lieu d’avoir à cliquer sur PAGES, puis à afficher la liste des 3 pages et à cliquer sur " EDIT "(et puis je cacherais le lien de section PAGES du menu admin).

Je me dirigeais dans cette voie, mais cela ne semble pas être ce que je veux/ai besoin (je ne peux pas le lier à un lien où je veux): http://codex.wordpress.org/Administration_Menus#Inserting_the_Pages

1
codeview

Pour ajouter dynamiquement des éléments de menu, vous pouvez utiliser WP_Query, en particulier get_posts ou get_pages. Obtenir des pages est plus cohérent. Voici un exemple pour ajouter toutes les pages au menu administrateur de Pages. Vous pouvez changer les paramètres pour exclure, inclure, orderby, etc. dans les $ args ci-dessous. Pour passer à un type de message personnalisé, il suffit de remplacer la variable $ custom par votre nom de type de message.

/*-----------------------------------------------------------------------------------*/
/* All Pages Dropdown List */
/*-----------------------------------------------------------------------------------*/

if ( !function_exists( 'admin_menu_links_to_all_edit_post_type_custom' ) ) {
function admin_menu_links_to_all_edit_post_type_custom() {
    if ( !is_admin() ) // Only Run if On Admin Pages
        return;

     $custom = 'page';  // Change this to your custom post type slug ( So for "http://www.example.com/wp-admin/edit.php?post_type=recipes" you would change this to 'recipes'  )



      // Full List of Paramaters - http://codex.wordpress.org/Template_Tags/get_posts
      $args = array(
          'orderby'          => 'modified', //Orderr by date , title , modified, etc
          'order'            => 'DESC', // Show most recently edited on top
          'post_type'        => $custom, // Post Type Slug
          'numberposts'      => -1,  // Number of Posts to Show (Use -1 to Show All)
          'post_status'      => array('publish', 'pending', 'draft', 'future', 'private', 'inherit'),
      );
      $types = get_posts( $args ); // Get All Pages
      foreach ($types as $post_type) {
      add_submenu_page( // add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
          'edit.php?post_type='.$custom
        , esc_attr(ucwords($post_type->post_title)) // Get title, remove bad characters, and uppercase it
        , esc_attr(ucwords($post_type->post_title)) // Get title, remove bad characters, and uppercase it
        , 'edit_posts' // Require Edit Post/Page/Custom Capability
        , 'post.php?post=' . $post_type->ID . '&action=edit' // Get the page link by its id
        , '' // No function callback
      );    
      }
      wp_reset_postdata();
}
add_action('admin_menu', 'admin_menu_links_to_all_edit_post_type_custom');
}

if ( !function_exists( 'admin_menu_links_to_all_edit_post_type_custom_css' ) ) {
    function admin_menu_links_to_all_edit_post_type_custom_css() {
?>
<style type="text/css">
ul#adminmenu li.wp-has-submenu > ul.wp-submenu.wp-submenu-wrap {
max-height: 700px;
overflow-x: scroll;
}
</style>
<?php
   }
    add_action('admin_head', 'admin_menu_links_to_all_edit_post_type_custom_css');
}

Ou simplement ajouter individuellement:

/*-----------------------------------------------------------------------------------*/
/* Single URL Submenu */
/*-----------------------------------------------------------------------------------*/

if ( !function_exists( 'single_submenu_dropdown_link_example' ) ) {
function single_submenu_dropdown_link_example() {
    global $submenu;
    $link_to_add = 'post.php?post=7&action=edit';
    // change edit.php to the top level menu you want to add it to 
    $submenu['edit.php'][] = array('About', 'edit_posts', $link_to_add);
}
add_action('admin_menu', 'single_submenu_dropdown_link_example');
}

Ceci ajoutera des menus d’administration de niveau supérieur à vos autres pages:

/*-----------------------------------------------------------------------------------*/
/* Toplevel Page Menus */
/*-----------------------------------------------------------------------------------*/

if ( ! function_exists( 'toplevel_admin_menu_pages' ) ) {
function toplevel_admin_menu_pages(){
if ( !current_user_can('administrator') ) {  // If the user is not the administrator remove and add new menus
    remove_menu_page( 'index.php' );                  //Dashboard
    remove_menu_page( 'edit.php' );                   //Posts
    remove_menu_page( 'upload.php' );                 //Media
    remove_menu_page( 'edit.php?post_type=page' );    //Pages
    remove_menu_page( 'edit-comments.php' );          //Comments
    remove_menu_page( 'themes.php' );                 //Appearance
    remove_menu_page( 'plugins.php' );                //Plugins
    remove_menu_page( 'users.php' );                  //Users
    remove_menu_page( 'tools.php' );                  //Tools
    remove_menu_page( 'options-general.php' );        //Settings
    add_menu_page( 'Home', 'Home', 'edit_posts', 'post.php?post=39&action=edit', '', 'dashicons-admin-home', 6 );
    add_menu_page( 'About', 'About', 'edit_posts', 'post.php?post=15&action=edit', '', 'dashicons-editor-help', 7 );
    add_menu_page( 'Services', 'Services', 'edit_posts', 'post.php?post=24&action=edit', '', 'dashicons-admin-tools', 8 );
    }
  }
add_action( 'admin_menu', 'toplevel_admin_menu_pages' );
}
3
Bryan Willis
if ( !function_exists( 'wp_toolbar_frontend_admin_menu_links_extras' ) ) {

function wp_toolbar_frontend_admin_menu_links_extras($wp_admin_bar) {   
    if ( is_admin() || !is_admin_bar_showing() )
          return;

   if ( !current_user_can('edit_pages') ) 
        return;

    $wp_admin_bar->add_node(array(
        'id' => 'homepage',
        'title' => 'Home',
        'href' => admin_url() . 'post.php?post=39&action=edit' ,
        'parent' => 'site-name',
        'meta' => array(
            'class' => 'homepage'
        )
    ));

    $wp_admin_bar->add_node(array(
        'id' => 'aboutus',
        'title' => 'About',
        'href' => admin_url() . 'post.php?post=36&action=edit' ,
        'parent' => 'site-name',
        'meta' => array(
            'class' => 'aboutus'
        )
    ));

    $wp_admin_bar->add_node(array(
        'id' => 'services',
        'title' => 'Services',
        'href' => admin_url(). 'post.php?post=32&action=edit' ,
        'parent' => 'site-name',
        'meta' => array(
            'class' => 'services'
        )
    ));
}

    add_action('admin_bar_menu', 'wp_toolbar_frontend_admin_menu_links_extras', 99);

}
0
Bryan Willis