netconstructorcom
  • 0
Мастер

Переименование пункта меню в разделе меню администратора для пользовательского типа записи?

  • 0

У меня ощущение, что это баг.

Когда вы создаете новый настраиваемый тип записи, кажется невозможным изменить текст первого элемента подменю. Я имею в виду ссылку, которая позволяет вам просмотреть список сообщений.

Из того, что я могу сказать, кажется, что это просто дублирует имя имени главного меню типа сообщения, которое было создано.

Кто-нибудь знает, как изменить этот текст, чтобы в элементе главного меню было написано «Статьи», а в названии подменю списка сообщений было указано «Управление статьями» ?

У меня сложилось впечатление, что это "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;
  }
 }
Share
  1. Привет @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');`  
    }
    

    PS Кстати, я заметил, что на этот вопрос, который вы задали почти неделю назад, было предоставлено 4 ответа, но вы не вернулись и не выбрали ни один из ответов в качестве правильного ответа. Поскольку вы были здесь, задавая много вопросов, я знаю, что вас не было рядом; пожалуйста, найдите время, чтобы выбрать лучший ответ на ваши вопросы, как только у вас будет жизнеспособный ответ, иначе люди могут быть демотивированы, чтобы продолжать отвечать. Что-то это считают…

    • 0
    • Спасибо, я просто подумал, что что-то упустил или был простой один лайнер без необходимости использовать отдельный класс. На самом деле странно, что при создании пользовательского типа записи эта опция недоступна.

      • 0
    • @NetConstuctor.com : полезно понять, как развивается открытый исходный код или, по крайней мере, WordPress. Во многих отношениях разработчики закладывают вещи на будущее. Учитывая, что у них есть цель выпускать 3 релиза в год, некоторые вещи слишком велики, чтобы делать их все сразу. Таким образом, части функциональности обрабатываются, но это не похоже на теоретическую крупную компанию-разработчика программного обеспечения, которая предоставляет «полное» решение сразу (в любом случае, любая из них действительно делает это на самом деле!) Кроме того, команда может не понимать, что вещи необходимы до тех пор, пока новая версия не позволит пользователям попробовать новые вещи.

      • 0
    • @NetConstuctor.com : Тем не менее, WordPress имеет лучший баланс между новыми функциями и возможностью расширения до тех новых функций, которые я когда-либо видел, и я профессионально программировал (время от времени) в течение 25 лет.

      • 0
  2. Это проблема семантики.

    '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');
    
    • 0

Оставить ответ

You must login to add an answer.