Как изменить «Записи» на любое другое слово в WordPress?
Хотелось бы поменять стандартное "Записи" на "Статьи" или "Новости", к примеру.
В сети есть примеры, как внедриться в массив с этими именами и изменить его. Но это решает часть проблемы, названия меняются в правом меню, но не во всей админке. А хотелось бы коренным образом поменять эту надпись. Буду благодарен любым мыслям на этот счёт!
Новый вариант: заменим слово «записи» на «статьи»
## заменим слово «записи» на «статьи» //$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'; public function __construct() { add_action( 'admin_menu', [ $this, 'change_post_label' ] ); add_action( 'init', [ $this, 'change_post_object' ] ); } 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'; } 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;Почему-то я думал, что можно иначе. И чего как ответ не даёшь?
Выбрать то не могу теперь верное решение.
А где при таком коде еще нужно поменять?
Идея какова: где-то ведь изначально есть данные, как и что называется, ведь так? К примеру, обращаясь к $menu[5][0] мы должны знать, что там именно названия типа поста хранится. Нет ли API, в котором мы бы указали, как и что называется и везде это уже подхватывается. Ярким примером является плагины создания таксономий, когда прописал как и что называется и всё.
В общем залез я в код разобрался. Как выяснялось это не самое лучшее решение и ты был прав что не соглашался с ним!
Есть еще такой хук 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
Хук мне настолько понравился, что я не удержался и заменил Записи на Посты.
## заменим слово "записи" на "посты" для типа записей '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 ); }Даааа, вот это другое дело! Спасибо большое, лучшего я и пожелать не мог!
а как заменить рубрики? на другое слово
Воспользуйтесь фильтром taxonomy_labels_(taxonomy).
Помогло
а как иконку можно изменить?
а то добавляю в массив
и ничего не меняется
Для подпунктов меню нельзя задать иконку таким способом.
а каким способом можно?
ребят поделитесь способом пожалуйста), можно конечно в самом ядре изменить,ну после обновления иконка пропадет
https://wp-kama.ru/hook/register_post_type_args
Если нужно менять больше чем массив label , то ссылка выше.
(иконка, маршруты, и т.п. включая api!!! )
Спасибо за разжевывания кодекса wp-kama.ru
Постоянно выручаете )
P.S. Пример на скорую руку (можно написать лаконичнее)
add_filter( 'register_post_type_args', 'filter_function_name_8795', 10, 2 ); function filter_function_name_8795( $args, $post_type ){ // Фильтруем... if ( 'post' == $post_type ) { $args['menu_icon'] = 'dashicons-megaphone'; //смена иконки $args['labels'] = [ '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 $args; }А стандартную иконку записей вариант как-нибудь поменять?
Выбирай на вкус из медиатеки или свг сунь https://wp-kama.ru/function/register_post_type#menu_icon