PAGESセクションで作成したページの1つにリンクするリンクを管理サイドバーに追加しようとしています。たとえば、私はABOUTページを作成しました。それでサイドバーで、私はこのリンクをロードする "About"へのリンクを望みます:post.php?post=7&action=edit
どうして?私はこれをやろうとしています。なぜなら私は4つのカスタム投稿タイプと3つのページを持つウェブサイトに取り組んでいるからです。カスタム投稿タイプには管理メニューのリンクがあるので、3ページのサイドバーに直接リンクがある場合は、[PAGES]をクリックしてから3ページのリストを表示してクリックしなくてもよい編集します(そして管理メニューからPAGESセクションのリンクを隠します)。
私はこの道を進んでいましたが、それは私が欲しい/必要なものではないようです(私が欲しいところにリンクすることができません): http://codex.wordpress.org/Administration_Menus# Inserting_the_Pages
メニュー項目を動的に追加するには、WP_Query、特にget_postsまたはget_pagesを使用できます。ページの取得はより一貫性があります。これがPages管理メニューにすべてのページを追加する例です。以下の$ argsで、パラメータをexclude、include、orderbyなどに変更できます。カスタム投稿タイプに変更するには、$ custom変数をあなたの投稿タイプ名に変更するだけです。
/*-----------------------------------------------------------------------------------*/
/* 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');
}
または個別に追加するには:
/*-----------------------------------------------------------------------------------*/
/* 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');
}
これはあなたの他のページにトップレベルの管理メニューを追加するでしょう:
/*-----------------------------------------------------------------------------------*/
/* 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' );
}
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);
}