从Wordpress Admin子菜单

时间:2017-06-08 16:37:50

标签: php wordpress menu admin

我想在我的Wordpress管理菜单中添加两个额外的子菜单项。我要加入的顶级菜单是'产品'菜单由WooCommerce创建。

edit.php?post_type=product

我希望菜单项显示的内容可以通过按产品类别过滤产品来访问。 E.g。

http://dev3.benefacto.org/wp-admin/edit.php?s&post_type=product&product_cat=manchester

我已经提出了一个工作解决方案(下面)来做到这一点 - 但它不够优雅,因为它需要调用一个函数,当我觉得我应该能够简单地在菜单中添加一些东西蛞蝓'也许变数。

任何想法都非常感激。

// Hook into the Admin Menu

add_action( 'admin_menu', 'lnz_wp_adminmenu_addproductpages' );

// Add Product Categories
function lnz_wp_adminmenu_addproductpages() {
add_submenu_page( 'edit.php?post_type=product', 'Manchester Charities - Page', 'Manchester Charities- Menu', 'manage_options', 'product_cat_manchester', 'lnz_wp_adminmenu_redirectmanchester' );
add_submenu_page( 'edit.php?post_type=product', 'London Charities - Page', 'London Charities- Menu', 'manage_options', 'product_cat_london', 'lnz_wp_adminmenu_redirectlondon' ); 
}

// Create Redirects for relevant links
function lnz_wp_adminmenu_redirectmanchester() {
   header('Location: http://dev3.benefacto.org/wp-admin/edit.php?s&post_type=product&product_cat=manchester');
   exit();
}

function lnz_wp_adminmenu_redirectlondon() {
   header('Location: http://dev3.benefacto.org/wp-admin/edit.php?s&post_type=product&product_cat=london');
   exit();
}

1 个答案:

答案 0 :(得分:1)

据我所知,没有直接的方法可以使用WP钩子或修改像global $submenu ...

这样的东西来实现这个目的。

可以使用jQuery修改子菜单项的href属性:

add_action( 'admin_menu', function() {
    add_submenu_page( 'edit.php?post_type=product', 'Manchester', 'Manchester', 'manage_options', 'cat_manchester', '__return_null' );
    add_submenu_page( 'edit.php?post_type=product', 'London', 'London', 'manage_options', 'cat_london', '__return_null' ); 
});

add_action('admin_footer', function(){
    ?>
    <script>
        jQuery(document).ready( function($) {
            var admin_url = 'http://dev3.benefacto.org/wp-admin/edit.php';
            $('#menu-posts-product').find('a[href*="cat_manchester"]').attr('href',admin_url+'?s&post_type=product&product_cat=manchester');
            $('#menu-posts-product').find('a[href*="cat_london"]').attr('href',admin_url+'?s&post_type=product&product_cat=london');
        });
    </script>
    <?php
});