私はCMS Page Order http://wordpress.org/extend/plugins/cms-page-order/ というプラグインを使用しています(現在参照中) CPOとして)
それは非常に簡単です、言ったプラグインはすべてのカスタム投稿タイプのサブメニューに新しい項目を追加します。メニュー項目から、特定の投稿タイプの投稿を並べ替えることができるページが表示されます。
このビューから直接新しい投稿を作成できるように追加したので、基本的にはWordpressのデフォルトの投稿編集ビューに似ていますが、投稿を並べ替えることもできます。これは通常の投稿編集ページをかなり役に立たなくします。
だから私の質問はです、それを置き換える "All投稿タイプ"のサブメニュー項目(edit.php?post_type=nameofposttype
)を削除する方法はありますかこのメニュー項目はCPOによって作成され、最上位レベルのメニュー項目自体もCPOによって作成されたページを指すようにします。
–––
私がやろうとしていたのは、トップレベルのメニュー項目を、プラグイン管理メニューエディタを使用してCPOによって作成されたサブメニュー項目のURLに置き換えようとすることです。それから、トップレベルのメニュー項目が一番上のサブメニュー項目を指すことに気づいたので、CPOメニュー項目をサブメニューの一番上に移動しようとしました(すなわち、 "All pages/posts")。それは間違ったURLを生成するのでそれはまたうまくいきませんでした(それはトップレベルのメニュー項目をadmin.php?page=order-xxx
に向けさせます)
これが私が何を意味するのかをさらに説明するための画像です。
これがトップレベルのアイテムがデフォルトとして振る舞う方法です(edit.php?post_type=xxx
)
これが、特別なメニューハンドラを使って自分のページを一番上に移動した場合の結果です。最上位のアイテムは新しいURLを取得しますが、それは誤りです(admin.php?page=order-xxx
)
これは特別なメニューハンドラページが持っているURL、トップレベルのメニューアイテムが持っているべきURLです(edit.php?post_type=xxx&page=order-xxx
)
それでは、トップレベルのメニュー項目を必要なURLに変更するにはどうすればよいですか。
メニューとサブメニューを表示するために、WordPressのグローバル変数でメニューを変更することもできます。最初の項目はすべてvar $menu
にあり、すべての上位項目は$submenu
にあります。
また、edit.php
を使ってサブメニュー項目の順序を変更するための小さな例です。このプラグインを追加して、デバッグを通じて結果を確認します。関数fb_cmp
は並べ替えのロジックにすぎませんが、この関数でカスタムの順序を定義できます。彼女は usort
のコールバックです。
<?php
/**
* Plugin Name: .my Tests
* Plugin URI: http://bueltge.de/
* Description:
* Version: 0.0.1
*/
add_action( 'admin_init', 'fb_get_menu' );
function fb_get_menu() {
global $menu, $submenu;
var_dump( $submenu['edit.php'] );
usort( $submenu['edit.php'], 'fb_cmp' );
echo '<hr>';
var_dump( $submenu['edit.php'] );
}
function fb_cmp( $a, $b ) {
if ($a->value == $b->value)
return 0;
else
return $a->value < $b->value ? 1 : -1; // reverse order
}
スクリーンショットの結果としてヒント。
あなたはjqueryを検討してみましたか?多分これはあなたを助けるでしょう。試してみましたが、うまくいきました。これを自分のfunctions.phpに入れるだけです。
add_action('admin_footer', 'change_post_url');
function change_post_url(){
?>
<script>
jQuery(document).ready(function($){
$(".anchor_class_name").attr("href","sample.php");
});
</script>
<?php
}
申し訳ありませんが、ページを登録するときにadd_query_arg( 'key', 'value' );
を使用することができます。
このブログ記事ではWordPress管理メニューシステム の詳細を説明しました 。これは多すぎるし多すぎるのでこれを投稿することはできません。