Показать все теги постов на экране редактирования постов

8

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

Я нашел похожий вопрос здесь Отображение всех тегов в админ -> редактировать пост . Но он предлагает редактировать / модифицировать файлы ядра WordPress, а это не то, что я действительно хочу. Потому что обновление WordPress будет огромной проблемой.

Я тоже не смог ничего найти в поиске гугл. Так что есть способ перечислить все или более 45 тегов на странице редактирования сообщения.

Роберт Хюэ
источник

Ответы:

9

Я бы сказал, что самый простой способ сделать это - использовать get_terms_argsфильтр и снять numberограничение, если контекст правильный (запрос AJAX, чтобы получить облако тегов):

function wpse_64058_all_tags ( $args ) {
    if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_POST['action'] ) && $_POST['action'] === 'get-tagcloud' )
        unset( $args['number'] );
    return $args;
}

add_filter( 'get_terms_args', 'wpse_64058_all_tags' );

Примечание. В окне редактирования ссылка по-прежнему будет выглядеть как «Выбрать из наиболее часто используемых тегов», хотя теперь мы показываем все из них.

Редактировать: как предложил @bonger, вы можете определить тип поста от реферера:

if ( $qs = parse_url( wp_get_referer(), PHP_URL_QUERY ) ) {
    parse_str( $qs, $args );

    if ( ! empty( $args['post_type'] ) )
        $post_type = $args['post_type'];
    elseif ( ! empty( $args['post'] ) )
        $post_type = get_post_type( $args['post'] );
    else
        $post_type = 'post';
}
TheDeadMedic
источник
2
+1. Было бы неплохо, если бы его можно было запускать только для определенных типов постов, но, боюсь, это не так просто. Что касается «Выбрать из наиболее часто используемых тегов» , можно использовать gettextфильтр, чтобы изменить его.
gmazzap
@ Г.М. Да, мы можем изменить текст. Но я согласен с «Выбрать из наиболее часто используемых тегов». Хотя мне интересно, почему мы не можем проверить post typeздесь? Это выполнено прежде всего?
Роберт Хюэ
1
Нет способа определить тип записи в контексте, который выполняет фильтр. Вы могли видеть, к какому типу записей прикреплена таксономия, но это полезно, только если это единственный тип записей. Единственный другой вариант - удалить post_tags_meta_boxобработчик по умолчанию и заменить его своим.
TheDeadMedic
Хотя вы могли $_SERVER['HTTP_REFERER']бы узнать, post_typeдействительно ли вы этого хотели.
Бонгер
1
Вы могли бы использовать wp_get_referer(). Имейте в виду, что он также возвращается falseв случае, если текущий запрос и предыдущий равны (кто бы ни имел эту идею: медленный хлопок).
Кайзер
0

Дополнение к ответу TheDeadMedic, чтобы показать ВСЕ теги:

if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_POST['action'] ) && $_POST['action'] === 'get-tagcloud' ) {
    unset( $args['number'] );
    $args['hide_empty'] = 0;
}
return $args;
Somi
источник
0

Просто добавив основную информацию:

При настройке таксономии 'hierarchical'=>trueон будет использовать боковое поле формата категории и покажет все термины по умолчанию.

user315338
источник