web-dev-qa-db-ja.com

カスタム投稿タイプの管理メニューセクション内のメニュー項目の名前を変更する

これはバグだと思います。

新しいカスタム投稿タイプを作成すると、最初のサブメニューアイテムのテキストを変更することはできません。私はあなたが投稿リストを見ることを可能にするリンクを参照しています。

私が言うことができるもののためにそれはちょうど作成されたメインの投稿タイプメニューの名前nameを複製しているようです。

メインメニューの要素に「記事」、投稿リストのサブメニュー名に「記事の管理」となるようにこのテキストを変更する方法を知っている人はいますか?

"edit_item"がサブメニューに表示されるテキストを制御するという印象を受けましたが、何らかの理由でこれが登録されていません。

これが私が現在使っているコードです:

//////////////////////////////////////////////////////////////////////////////
// CUSTOM POSTTYPE FOR -- ARTICLES  
//////////////////////////////////////////////////////////////////////////////

add_action('init', 'articles');
function articles() {
 register_post_type('articles', array(
  'labels' => array(
   'name'   => __('Articles'),
   'singular_label'  => __('Article'),
   'new_item'   => __('Add Article'),
   'add_new'   => __('Add Article'),
   'add_new_item'  => __('Add Article'),
   'edit'   => __('Edit Article'),
   'edit_item'   => __('Edit Article'),
   'view'   => __('View Article'),
   'view_item'   => __('View Article'),
   'search_items'  => __('Search Articles'),
   'not_found'   => __('No Articles Found'),
   'not_found_in_trash' => __('No Articles Found in Trash'),
   ),
  'supports' => array(
   'thumbnail',
   'title',
   'editor',
   'author',
   'revisions',
   ),
  'rewrite' => array( 
   'slug'   => 'articles', 
   'with_front'   => false,
   ),
  'rewrite'    => true,
  'can_export'    => true,
  'show_ui'    => true,
  'menu_position'   => 3,
  'public'    => true,
  'query_var'    => true,
  'publicly_queryable'  => true,
  'exclude_from_search'  => false,
  'capability_type'   => 'post',
  'hierarchical'   => false,
 ));
 }


add_filter('manage_edit-articles_columns', 'add_new_articles_columns');
function add_new_articles_columns($articles_columns) {
 $new_columns['cb']     = '<input type="checkbox" />';
 $new_columns['article_thumbnail']   = _x('Image', 'column name');
 $new_columns['title']    = _x('Article Title', 'column name');
 $new_columns['article_excerpt']   = _x('Article Excerpt', 'column name');
 $new_columns['article_source']   = _x('Article Source', 'column name');
 $new_columns['author']    = __('Created by');
 $new_columns['date']    = _x('Last Action', 'column name');
 return $new_columns;
 }
add_action('manage_posts_custom_column', 'manage_articles_columns', 10, 2);
function manage_articles_columns($column_name, $id) {
 global $wpdb;
 switch ($column_name) { 
  case 'article_thumbnail':  
   the_post_thumbnail( array(50,50) );
   break; 
  case 'article_excerpt': echo substr(get_the_excerpt(),0,500); 
   break;
  case 'article_source':
         echo get_the_term_list($post->ID, 'content_sources', '', ', ','');
   break;
  default: break;
  }
 }
3

こんにちは@ NetConstructor.com

私はあなたがこれについてすでに尋ねたと思います、そして私はあなたにこの質問にも答えるであろう答えを与えました:

その答えの中で私はあなたに与えた ライブラリ あなたは管理メニューとの対話をとても簡単にするために使うことができます。この質問に関してあなたが述べた目標を達成するためにあなたがしなければならないことは次のとおりです。

<?php
require_once('wp-admin-menu-classes.php');
add_action('admin_menu','my_admin_menu');
function my_admin_menu() {
  rename_admin_menu_section('Articles','Manage Articles');`  
}

P.Sところで、私はあなたがほぼ1週間前に尋ねた その質問に対して4つの答えが提供された があったことに気づいたが、あなたは正しい答えとして選ばれた答えを取り戻さなかった。あなたはここにたくさんの質問をしてきたので、あなたが周りにいなかったわけではないと私は知っています。実行可能な答えがあるとすぐにあなたの質問に最適な答えを選択するために時間をかけてください。そうでなければ人々は答え続けるために意欲をそそられるかもしれません。これが何か考えています...

1
MikeSchinkel

これは意味論の問題です。

'edit_item'   => __('Edit Article'),

これは記事を編集したときに表示されるものです。 「投稿」リストのメニュー項目が「投稿」ではなく「投稿の編集」と呼ばれる理由は、それが誤解を招く可能性があるためです。

投稿を編集するだけでなく、削除したり移動したりすることもできます。同じことがページや他の種類の投稿にも当てはまります。これが、セクションメニューに使用されているのと同じフィールドが最初のサブメニュー項目にも使用されている理由です。それに本当の論理があります。 'show_ui' => true,をfalseに設定して自分で実装することを妨げるものは何もないと言っています。

しかし、何らかの理由で実際に編集したい場合は、配列内の必要なサブメニューエントリを検索してその名前を変更することによって、後でfunctions.phpにメニューを処理するためのフックを追加する必要があります。

これらの線に沿った何かは、いくらかの修正を必要とするかもしれませんが、するでしょう:

function edit_menus() {
    global $menu;
    end ($menu);
    while (prev($menu)){
        $value = explode(' ',$menu[key($menu)][0]);
        if(strpos($menu[key($menu)], "menu name" )){
            $menu[key($menu)] = str_replace("menu name", "newmenuname", $menu[key($menu)]);
            break;
        }
    }
}
add_action('admin_menu', 'edit_menus');
2
Tom J Nowell