WordPress как на ладони
wordpress jino

Как изменить «Записи» на любое другое слово в WordPress?

Хотелось бы поменять стандартное "Записи" на "Статьи" или "Новости", к примеру.

В сети есть примеры, как внедриться в массив с этими именами и изменить его. Но это решает часть проблемы, названия меняются в правом меню, но не во всей админке. А хотелось бы коренным образом поменять эту надпись. Буду благодарен любым мыслям на этот счёт!

2
campusboy1951 1.2 года назад
  • 2
    Kama4697

    Новый вариант: заменим слово «записи» на «статьи»

    ## заменим слово «записи» на «статьи»
    //$labels = apply_filters( "post_type_labels_{$post_type}", $labels );
    add_filter('post_type_labels_post', 'rename_posts_labels');
    function rename_posts_labels( $labels ){
    	// заменять автоматически не пойдет например заменили: Запись = Статья, а в тесте получится так "Просмотреть статья"
    
    	/* оригинал
    		stdClass Object (
    			'name'                  => 'Записи',
    			'singular_name'         => 'Запись',
    			'add_new'               => 'Добавить новую',
    			'add_new_item'          => 'Добавить запись',
    			'edit_item'             => 'Редактировать запись',
    			'new_item'              => 'Новая запись',
    			'view_item'             => 'Просмотреть запись',
    			'search_items'          => 'Поиск записей',
    			'not_found'             => 'Записей не найдено.',
    			'not_found_in_trash'    => 'Записей в корзине не найдено.',
    			'parent_item_colon'     => '',
    			'all_items'             => 'Все записи',
    			'archives'              => 'Архивы записей',
    			'insert_into_item'      => 'Вставить в запись',
    			'uploaded_to_this_item' => 'Загруженные для этой записи',
    			'featured_image'        => 'Миниатюра записи',
    			'set_featured_image'    => 'Задать миниатюру',
    			'remove_featured_image' => 'Удалить миниатюру',
    			'use_featured_image'    => 'Использовать как миниатюру',
    			'filter_items_list'     => 'Фильтровать список записей',
    			'items_list_navigation' => 'Навигация по списку записей',
    			'items_list'            => 'Список записей',
    			'menu_name'             => 'Записи',
    			'name_admin_bar'        => 'Запись',
    		)
    	*/
    
    	$new = array(
    		'name'                  => 'Статьи',
    		'singular_name'         => 'Статья',
    		'add_new'               => 'Добавить статью',
    		'add_new_item'          => 'Добавить статью',
    		'edit_item'             => 'Редактировать статью',
    		'new_item'              => 'Новая статья',
    		'view_item'             => 'Просмотреть статью',
    		'search_items'          => 'Поиск статей',
    		'not_found'             => 'Статей не найдено.',
    		'not_found_in_trash'    => 'Статей в корзине не найдено.',
    		'parent_item_colon'     => '',
    		'all_items'             => 'Все статьи',
    		'archives'              => 'Архивы статей',
    		'insert_into_item'      => 'Вставить в статью',
    		'uploaded_to_this_item' => 'Загруженные для этой статьи',
    		'featured_image'        => 'Миниатюра статьи',
    		'filter_items_list'     => 'Фильтровать список статей',
    		'items_list_navigation' => 'Навигация по списку статей',
    		'items_list'            => 'Список статей',
    		'menu_name'             => 'Статьи',
    		'name_admin_bar'        => 'Статью', // пункте "добавить"
    	);
    
    	return (object) array_merge( (array) $labels, $new );
    }

    Можно подключать в плагин или в тему!

    Заметка: все это срабатывает во время init с приоритетом 0

    Старый вариант: тоже рабочий, но он хуже...

    <?php
    /*
    Plugin Name: Rename Posts to XXX
    Description: Change the name of the default post type
    Author: Robert Brian Gottier
    Version: 0.0.1
    Author URI: http://brianswebdesign.com
    License: MIT
    */
    
    class rename_posts {
    
       private $singular = 'Article';
       private $plural   = 'Articles';
    
       /**
    	* Class Constructor
    	*/
       public function __construct()
       {
    	  add_action( 'admin_menu', [ $this, 'change_post_label' ] );
    	  add_action( 'init', [ $this, 'change_post_object' ] );
       }
    
       // -----------------------------------------------------------------------
    
       /**
    	* Change Post Label
    	*/
       public function change_post_label()
       {
    	  global $menu;
    	  global $submenu;
    
    	  $menu[5][0]                 = $this->plural;
    	  $submenu['edit.php'][5][0]  = $this->plural;
    	  $submenu['edit.php'][10][0] = 'Add ' . $this->singular;
    	  $submenu['edit.php'][16][0] = $this->singular . ' Tags';
       }
    
       // -----------------------------------------------------------------------
    
       /**
    	* Change Post Object
    	*/
       public function change_post_object()
       {
    	  global $wp_post_types;
    
    	  $labels                     = &$wp_post_types['post']->labels;
    
    	  $labels->name               = $this->plural;
    	  $labels->singular_name      = $this->singular;
    	  $labels->add_new            = 'Add ' . $this->singular;
    	  $labels->add_new_item       = 'Add ' . $this->singular;
    	  $labels->edit_item          = 'Edit ' . $this->singular;
    	  $labels->new_item           = 'New ' . $this->singular;
    	  $labels->view_item          = 'View ' . $this->singular;
    	  $labels->search_items       = 'Search ' . $this->plural;
    	  $labels->not_found          = 'No ' . $this->plural . ' found';
    	  $labels->not_found_in_trash = 'No ' . $this->plural . ' found in Trash';
    	  $labels->all_items          = 'All ' . $this->plural;
    	  $labels->menu_name          = $this->plural;
    	  $labels->name_admin_bar     = $this->singular;
       }
    
       // -----------------------------------------------------------------------
    
    }
    
    new rename_posts;
    campusboy 1.2 года назад

    Почему-то я думал, что можно иначе. И чего как ответ не даёшь? smile Выбрать то не могу теперь верное решение.

    Kama 1.2 года назад

    А где при таком коде еще нужно поменять?

    campusboy 1.2 года назад

    Идея какова: где-то ведь изначально есть данные, как и что называется, ведь так? К примеру, обращаясь к $menu[5][0] мы должны знать, что там именно названия типа поста хранится. Нет ли API, в котором мы бы указали, как и что называется и везде это уже подхватывается. Ярким примером является плагины создания таксономий, когда прописал как и что называется и всё.

    Kama 1.2 года назад

    В общем залез я в код разобрался. Как выяснялось это не самое лучшее решение и ты был прав что не соглашался с ним!

    Есть еще такой хук post_type_labels_{$post_type} и через него можно это сделать

    //$labels = apply_filters( "post_type_labels_{$post_type}", $labels );
    add_filter('post_type_labels_post', 'rename_posts_labels');
    function rename_posts_labels( $labels ){
    	// заменять автоматически не пойдет например заменили: Запись = Статья, а в тесте получится так "Просмотреть статья"
    
    	/* оригинал
    		stdClass Object (
    			'name'                  => 'Записи',
    			'singular_name'         => 'Запись',
    			'add_new'               => 'Добавить новую',
    			'add_new_item'          => 'Добавить запись',
    			'edit_item'             => 'Редактировать запись',
    			'new_item'              => 'Новая запись',
    			'view_item'             => 'Просмотреть запись',
    			'search_items'          => 'Поиск записей',
    			'not_found'             => 'Записей не найдено.',
    			'not_found_in_trash'    => 'Записей в корзине не найдено.',
    			'parent_item_colon'     => '',
    			'all_items'             => 'Все записи',
    			'archives'              => 'Архивы записей',
    			'insert_into_item'      => 'Вставить в запись',
    			'uploaded_to_this_item' => 'Загруженные для этой записи',
    			'featured_image'        => 'Миниатюра записи',
    			'set_featured_image'    => 'Задать миниатюру',
    			'remove_featured_image' => 'Удалить миниатюру',
    			'use_featured_image'    => 'Использовать как миниатюру',
    			'filter_items_list'     => 'Фильтровать список записей',
    			'items_list_navigation' => 'Навигация по списку записей',
    			'items_list'            => 'Список записей',
    			'menu_name'             => 'Записи',
    			'name_admin_bar'        => 'Запись',
    		)
    	*/
    
    	$new = array(
    		'name'                  => 'Статьи',
    		'singular_name'         => 'Статья',
    		'add_new'               => 'Добавить статью',
    		'add_new_item'          => 'Добавить статью',
    		'edit_item'             => 'Редактировать статью',
    		'new_item'              => 'Новая статья',
    		'view_item'             => 'Просмотреть статью',
    		'search_items'          => 'Поиск статей',
    		'not_found'             => 'Статей не найдено.',
    		'not_found_in_trash'    => 'Статей в корзине не найдено.',
    		'parent_item_colon'     => '',
    		'all_items'             => 'Все статьи',
    		'archives'              => 'Архивы статей',
    		'insert_into_item'      => 'Вставить в статью',
    		'uploaded_to_this_item' => 'Загруженные для этой статьи',
    		'featured_image'        => 'Миниатюра статьи',
    		'filter_items_list'     => 'Фильтровать список статей',
    		'items_list_navigation' => 'Навигация по списку статей',
    		'items_list'            => 'Список статей',
    		'menu_name'             => 'Статьи',
    		'name_admin_bar'        => 'Статью', // пункте "добавить"
    	);
    
    	return (object) array_merge( (array) $labels, $new );
    }

    Можно подключать в плагин или в тему!

    Заметка: все это срабатывает во время init с приоритетом 0

    Kama 1.2 года назад

    Хук мне настолько понравился, что я не удержался и заменил Записи на Посты.

    ## заменим слово "записи" на "посты" для типа записей 'post'
    //$labels = apply_filters( "post_type_labels_{$post_type}", $labels );
    add_filter('post_type_labels_post', 'rename_posts_labels');
    function rename_posts_labels( $labels ){
    	// заменять автоматически нельзя: Запись = Статья, а в тексте получим "Просмотреть статья"
    
    	$new = array(
    		'name'                  => 'Посты',
    		'singular_name'         => 'Пост',
    		'add_new'               => 'Добавить пост',
    		'add_new_item'          => 'Добавить пост',
    		'edit_item'             => 'Редактировать пост',
    		'new_item'              => 'Новый пост',
    		'view_item'             => 'Просмотреть пост',
    		'search_items'          => 'Поиск постов',
    		'not_found'             => 'Посты не найдены.',
    		'not_found_in_trash'    => 'Посты в корзине не найдены.',
    		'parent_item_colon'     => '',
    		'all_items'             => 'Все посты',
    		'archives'              => 'Архивы постов',
    		'insert_into_item'      => 'Вставить в пост',
    		'uploaded_to_this_item' => 'Загруженные для этого поста',
    		'featured_image'        => 'Миниатюра поста',
    		'filter_items_list'     => 'Фильтровать список постов',
    		'items_list_navigation' => 'Навигация по списку постов',
    		'items_list'            => 'Список постов',
    		'menu_name'             => 'Посты',
    		'name_admin_bar'        => 'Пост', // пункте "добавить"
    	);
    
    	return (object) array_merge( (array) $labels, $new );
    }
    campusboy 1.2 года назад

    Даааа, вот это другое дело! Спасибо большое, лучшего я и пожелать не мог!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.