web-dev-qa-db-ja.com

カスタム管理メニューの順序

管理者メニューを並べ替えるための私のfunctions.phpに簡単な解決策があります。ここにあります:

// Admin menu - reorder
function custom_menu_order($menu_ord){
  if (!$menu_ord) return true;
  return array(
    'index.php', // Dashboard
    'edit.php?post_type=page', // Pages
    'edit.php?post_type=shop_order', // WooCommerce
    'edit.php?post_type=product', // Products
    'gf_edit_forms', // Forms
    'upload.php', // Media
    'separator1', // First separator
    'separator2', // Second separator
    'separator-last', // Last separator
    'users.php', // Users
    'themes.php', // Appearance
    'options-general.php', // Settings
    'plugins.php', // Plugins
    'tools.php', // Tools
    'itsec', // Security
    'edit.php?post_type=acf-field-group', // Custom Fields
    'edit.php?post_type=cptm' // Post types
  );
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');

これはうまく機能しますが、この1つの項目では機能しません。

'edit.php?post_type=shop_order', // WooCommerce

それは単にメニューの一番下に表示されます。正しい順序で表示させるために私がやろうとしたことはすべて失敗します。問題はpost_typeの名前shop_orderであると思います。それが失敗に終わっていると私が思うのは、アンダースコアです。

それがなぜそうなるのか、という考えはありますか。この目的は追加のプラグインを使用しないようにすることであるため、プラグインを使用するとは言わないでください。ありがとうございました!

1
bcoyour

WooCommerceメニュー項目の実際のナメクジは 'woocommerce'です。

だからあなたが交換した場合:

'edit.php?post_type=shop_order', // WooCommerce 

と:

'woocommerce', // WooCommerce 

上記のコードは動作します。

メニュー配列のすべての項目を で表示する便利な関数を見つけました。プラグインによって挿入された管理メニューページを削除するには?

これは私がメニュー項目を並べ替えるときに使う関数です(上記のリンクから):

function my_debug_admin_menu() {
    echo '<pre style="margin-left:200px;">' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>';
}
add_action( 'admin_init', 'my_debug_admin_menu' );
4
Zane DeVault