使用ADD_MENU_PAGE的自定义菜单链接上的活动类不工作

时间:2015-03-31 作者:need-help

我使用以下代码创建了新的自定义菜单,其作用类似于链接到某个页面:

add_menu_page( __( \'Gallery\', \'\' ), __( \'Gallery\', \'\' ), \'edit_posts\', \'post.php?post=\'. $gallery_page_id .\'&action=edit\', \'\', \'dashicons-admin-gallery\', 6 );
问题是,当我点击这个链接时,活动类会出现在“页面”上,而不是我的自定义菜单链接上(我知道这是页面的一部分)。

问题是如何将活动类添加到自定义链接并从“页面”中删除。

2 个回复
最合适的回答,由SO网友:websupporter 整理而成

好吧,我建议这是一个相当棘手的问题,但我建议如下:

add_action( \'admin_head\', \'chg_menu_on_special_pages_page\' );
function chg_menu_on_special_pages_page(){
    global $parent_file;
    $gallery_page_id = 2;
    if( $parent_file != \'edit.php?post_type=page\' )
        return;

    if( ! isset( $_GET[\'post\'] ) || $_GET[\'post\'] != $gallery_page_id )
        return;

    $parent_file = \'post.php?post=\'. $gallery_page_id .\'&action=edit\';
    return;
}
由全球$parent_file 决定突出显示哪个菜单。我们在admin_head-action,显示菜单之前的最后一个动作挂钩。WordPress已经决定$parent_file, 对于您的图库,它将是“edit.php?post\\u type=page”。

那么,我们该怎么办?我们检查是否在“库”-编辑页面上,如果是,我们切换$parent_file 到URL,我们已使用add_menu_page(). 在我的代码中,我设置$gallery_page_id = 2; 来测试它。

管理员中的文件,您可能感兴趣的有wp-admin/menu-header.php. 您可能感兴趣的变量有$menu, $submenu, $parent_file.

我希望这对你有帮助。

SO网友:dancriel

也许你可以定义一个函数,它只会吸引帖子。php内容,并将其设置为add\\u menu\\u page()的回调。但是slug参数并不意味着接受变量。您需要修改$\\u请求数组来实现这一点。

例如:

add_menu_page( __( \'Gallery\', \'\' ), __( \'Gallery\', \'\' ), \'edit_posts\', \'gallery-edit\', \'gallery-edit-page\', \'dashicons-admin-gallery\', 6 );
function gallery-edit-page() {
  $gallery_page_id = 0; // change to the ID of your gallery page
  $_REQUEST[\'post\'] = $gallery_page_id;
  $_REQUEST[\'action\'] = \'edit\';
  include(\'post.php\');
}

结束

相关推荐

没有调用Page.php,则回退到index.php

我正在Wordpress 4.1中创建一个自定义主题。当尝试转到不是主页或公文包(有自定义页面)的页面时,应该加载页面。php。但我得到的是索引。没有插件导致这方面的变化,因为我尝试禁用所有插件,然后重试。没有变化。我的页面。php是一个非常简单的主题,以215主题为例:<?php get_header() ?> <?php // Start the loop. while ( have_posts() ) : the_post();&#