it-swarm.cn

在管理菜单部分中为自定义帖子类型重命名菜单项?

我有一种感觉这是一个错误。

当您创建新的自定义帖子类型时,似乎无法修改第一个子菜单项文本。我指的是允许您查看帖子列表的链接。

我可以告诉它,它似乎只是复制了创建的主要帖子类型菜单的名称。

有谁知道如何修改这个文本,以便我可以让主菜单元素说“文章”和帖子列表子菜单名称说“管理文章”

我的印象是"edit_item"将控制要在te子菜单中显示的文本,但由于某种原因,这不是注册。

这是我目前使用的代码:

//////////////////////////////////////////////////////////////////////////////
// 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

@ 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');`  
}

附:顺便说一下,我注意到在那个问题上提供了 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