ADD_SUBMENU_PAGE()的管理菜单上的当前类错误

时间:2013-10-16 作者:Lio Eters

我正在编写一个插件,它在管理菜单中显示一个帖子/页面列表,作为每种帖子类型的子菜单。以下是我得到的代码:http://pastebin.com/DmUGfzxN

列表显示和链接良好。但是,当我转到另一个菜单(例如,Media)并编辑帖子(在本例中为图像)时,我遇到了一个问题。WordPress用于管理菜单的当前类指向错误的位置,并打开页面菜单,突出显示最后一个子菜单项。

我认为这是一个相关的问题:Current class on admin menu using add_submenu_page()

他解决了这个问题,将子菜单页面添加到页面slug中,而不是像这样的链接admin.php?=page.... 不幸的是,我希望我的子菜单位于Post、Page等下面,所以我需要使用edit.phpedit.php?post_type=....

如果有人知道如何避开这个怪癖/错误,我将不胜感激。非常感谢。

1 个回复
SO网友:Lio Eters

我重写了代码:

/*
Plugin Name: Admin Menu Post List
Plugin URI:
Description: Display a simple post list in admin menu for easy access
Version: 0.2
Author: Eliot Akira
Author URI:
License: GPL2
*/


/*
 * Load CSS in header
 */

function custom_post_list_view_css() { ?>

        <style>
                .post_list_view_headline {
                        padding-left: 10px !important;
                        padding-right: 10px !important;
                }
                .post_list_view_post {
                        margin-left:12px;
                }
                .post_current a {
                        color:white !important;
                }
    </style>

<?php }
add_action( \'admin_head\', \'custom_post_list_view_css\' );


/*
 * Admin Menu Post List
 */


add_action(\'admin_menu\', \'custom_post_list_view\');
function custom_post_list_view() {

        /*** Get options ***/

        $post_types = array( \'post\', \'page\' );

        $current_post_ID = $_GET[\'post\']; /* Get current post ID on admin screen */

        foreach ($post_types as $post_type) {

                $custom_menu_slug = $post_type;
                $output = \'\';

                $args = array(
                        "post_type" => $post_type,
                        "parent" => "0",
                        "post_parent" => "0",
                        "numberposts" => "-1",
                        "orderby" => "menu_order",
                        "order" => "ASC",
                        "post_status" => "any",
                        "suppress_filters" => 0
                );

                $posts = get_posts($args);

                if($posts) {

                        $output .= \'</a>\';

                        $output .= \'<div class="list_view_\' . $post_type . \'">\'
                                                . \'<div class="post_list_view_headline">\' . \'<hr>\' . \'</div>\';
                        foreach ($posts as $post) {
                                $edit_link = get_edit_post_link($post->ID);
                                $title = get_the_title($post->ID);
                                $title = esc_html($title);
                                $output .= \'<div class="post_list_view_post\';
                                if($current_post_ID == ($post->ID)) {
                                        $output .= \' post_current\';
                                }
                                $output .= \'">\'
                                        . \'<a href="\'
                                        . $edit_link    . \'">\'
                                        . $title . \'</a></div>\';

                                /*** Search for children? ***/

                        }
                        $output .= \'</div>\';

                        $output .= \'<a>\';

                        if($post_type == \'post\') {
                                add_posts_page( "Title", $output, "edit_posts", $custom_menu_slug, "custom_post_list_view_page");
                        } else {
                                 if ($post_type == \'page\') {
                                        add_pages_page( "Title", $output, "edit_pages", $custom_menu_slug, "custom_post_list_view_page");
                                } else {
                                        if($post_type == \'attachment\') {
                                                 add_media_page("Title", $output, "edit_posts", $custom_menu_slug, "custom_post_list_view_page");
                                        } else {
                                                add_submenu_page((\'edit.php?post_type=\' . $post_type), "Title", $output, "edit_posts", (\'edit.php?post_type=\' . $post_type), "custom_post_list_view_page");
                                        }
                                }
                        }
                }
        } // End foreach post type
}

function custom_post_list_view_page() { /* Empty */ }
现在它显示子菜单,当前类不会影响它。在输出子菜单的地方,我更改了<ul><li><div>. 我添加了一个检查,查看菜单项是否等于当前正在编辑的帖子,并在admin\\u标题中添加了一点CSS以突出显示该项。请参考上面的代码粘贴。

接下来,我将研究显示子页面。

结束

相关推荐