Можно ли переименовать стандартную таксономию "метки записей" в WordPress?

17 нояб. 2010 г., 12:48:05
Просмотры: 17.7K
Голосов: 17

Я планирую использовать стандартную таксономию "метки записей" для создания общего набора меток для записей и 2 пользовательских типов записей (чтобы можно было собирать/группировать по меткам).

Хотелось бы переименовать "метки записей" во что-то другое - например, "общие метки" - чтобы сделать название более понятным, особенно когда эта таксономия прикрепляется к другим пользовательским типам записей.

Есть ли способ сделать это в WordPress, или нужно использовать SQL? Также, известно ли, ожидает ли WordPress, что эта таксономия существует именно под именем "метки записей"?

0
Все ответы на вопрос 4
3
24

Информация о таксономиях хранится в глобальном массиве $wp_taxonomies. При регистрации новой таксономии она добавляется как объект с различными свойствами, включая метки (labels) для использования в интерфейсе. Стандартные метки (теги) и категории также регистрируются там при каждой загрузке страницы с помощью функции create_initial_taxonomies(), которая срабатывает на хуке init.

Поскольку это простой массив объектов, мы можем изменять его и наблюдать за результатом. Нас интересуют свойства labels и label.

add_action( 'init', 'wpa4182_init');
function wpa4182_init()
{
    global $wp_taxonomies;

    // Список меток, которые мы можем изменить, взят из:
    //  http://codex.wordpress.org/Function_Reference/register_taxonomy
    //  http://core.trac.wordpress.org/browser/branches/3.0/wp-includes/taxonomy.php#L350
    $wp_taxonomies['post_tag']->labels = (object)array(
        'name' => 'Теги WPA 4182',
        'menu_name' => 'Теги WPA 4182',
        'singular_name' => 'Тег WPA 4182',
        'search_items' => 'Искать теги WPA 4182',
        'popular_items' => 'Популярные теги WPA 4182',
        'all_items' => 'Все теги WPA 4182',
        'parent_item' => null, // Теги не иерархичны
        'parent_item_colon' => null,
        'edit_item' => 'Редактировать тег WPA 4182',
        'update_item' => 'Обновить тег WPA 4182',
        'add_new_item' => 'Добавить новый тег WPA 4182',
        'new_item_name' => 'Название нового тега WPA 4182',
        'separate_items_with_commas' => 'Разделяйте теги WPA 4182 запятыми',
        'add_or_remove_items' => 'Добавить или удалить теги WPA 4182',
        'choose_from_most_used' => 'Выбрать из часто используемых тегов WPA 4182',
    );

    $wp_taxonomies['post_tag']->label = 'Теги WPA 4182';
}

Я не проверял это везде, и вам, вероятно, придется изменить это в своей теме самостоятельно, но, кажется, это делает то, что вам нужно:

Метабокс тегов с новыми метками

17 нояб. 2010 г. 13:33:04
Комментарии

Отлично — попробую и отпишусь о результатах. Спасибо

anu anu
17 нояб. 2010 г. 14:13:37

именно то, что мне было нужно. Не знал о глобальной переменной $taxonomies

helgatheviking helgatheviking
7 нояб. 2011 г. 23:50:07

Небольшая проблема при использовании этого кода: если я работаю на WP 3.8.1 с DEBUG:true, на странице редактирования каждого тега появляется уведомление: "Notice: Undefined property: stdClass::$view_item in /wp-includes/admin-bar.php on line 508". Действительно, если добавить метку "view_item" в список (View WPA 4182), уведомление исчезает.

Manu Manu
26 февр. 2014 г. 14:08:34
1

Переименование конкретных меток категорий:

add_action('init', 'renameCategory');
function renameCategory() {
    global $wp_taxonomies;

    $cat = $wp_taxonomies['category'];
    $cat->label = 'Мои категории';
    $cat->labels->singular_name = 'Моя категория';
    $cat->labels->name = $cat->label;
    $cat->labels->menu_name = $cat->label;
    //…
}

Метки: http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

15 мар. 2012 г. 15:29:48
Комментарии

Это, безусловно, самый простой способ изменить название стандартной таксономии категорий, отличный ответ.

serraosays serraosays
27 янв. 2017 г. 18:05:18
1

Вы можете удалить таксономию "Категории" и затем просто создать свою собственную.

В моем примере я удалил таксономию "Категории" для записей и заменил ее на таксономию "Темы".

add_action( 'init', 'unregister_taxonomy' );
function unregister_taxonomy() {
    global $wp_taxonomies;
    $taxonomy = 'category';
    if ( taxonomy_exists($taxonomy) ){
        unset( $wp_taxonomies[$taxonomy] );
    }
}

function article_subjects() {
    $labels = array(
        'name'                       => _x( 'Темы', 'Taxonomy General Name', 'dc' ),
        'singular_name'              => _x( 'Тема', 'Taxonomy Singular Name', 'dc' ),
        'menu_name'                  => __( 'Темы', 'dc' ),
        'all_items'                  => __( 'Все элементы', 'dc' ),
        'parent_item'                => __( 'Родительский элемент', 'dc' ),
        'parent_item_colon'          => __( 'Родительский элемент:', 'dc' ),
        'new_item_name'              => __( 'Новая тема', 'dc' ),
        'add_new_item'               => __( 'Добавить новый элемент', 'dc' ),
        'edit_item'                  => __( 'Редактировать элемент', 'dc' ),
        'update_item'                => __( 'Обновить элемент', 'dc' ),
        'separate_items_with_commas' => __( 'Разделяйте элементы запятыми', 'dc' ),
        'search_items'               => __( 'Поиск элементов', 'dc' ),
        'add_or_remove_items'        => __( 'Добавить или удалить элементы', 'dc' ),
        'choose_from_most_used'      => __( 'Выбрать из наиболее используемых элементов', 'dc' ),
        'not_found'                  => __( 'Не найдено', 'dc' ),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'article_subjects', array( 'post' ), $args );
}
add_action( 'init', 'article_subjects', 0 );
19 июн. 2014 г. 07:49:15
Комментарии

Это именно то, что мне нужно. Спасибо! Я внес только одно небольшое изменение: https://english.stackexchange.com/questions/25931/unregister-vs-deregister?newreg=1beb484b28ae485880486c283d51a1eb

tehlivi tehlivi
18 апр. 2017 г. 01:35:33
0

Отсюда здесь

// подключение фильтров перевода
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace доступен только в PHP5
     return $translated;
}
12 мая 2011 г. 01:28:00