По какому урл доступны все посты пользовательской таксономии Wordpress?

186
05 сентября 2018, 03:10

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

add_action('init', 'create_taxonomy');
function create_taxonomy(){
// список параметров: http://wp-kama.ru/function/get_taxonomy_labels
register_taxonomy('menu_tax', array('menu_post'), array(
    'label'                 => '', // определяется параметром $labels->name
    'labels'                => array(
        'name'              => 'Категории меню',
        'singular_name'     => 'Категория',
        'search_items'      => 'Поиск категорий меню',
        'all_items'         => 'Все категории меню',
        'view_item '        => 'Посмотреть категорию',
        'parent_item'       => 'Родительская категория',
        'parent_item_colon' => 'Родительская категория:',
        'edit_item'         => 'Редактировать категорию',
        'update_item'       => 'Обновить категорию',
        'add_new_item'      => 'Добавить новую категорию',
        'new_item_name'     => 'Название новой категории',
        'menu_name'         => 'Категории меню',
    ),
    'description'           => '', // описание таксономии
    'public'                => true,
    'publicly_queryable'    => null, // равен аргументу public
    'show_in_nav_menus'     => true, // равен аргументу public
    'show_ui'               => true, // равен аргументу public
    'show_in_menu'          => true, // равен аргументу show_ui
    'show_tagcloud'         => true, // равен аргументу show_ui
    'show_in_rest'          => null, // добавить в REST API
    'rest_base'             => null, // $taxonomy
    'hierarchical'          => true,
    'update_count_callback' => '',
    'rewrite'               => true,
    'query_var'             => false, // название параметра запроса
    'capabilities'          => array(),
    'meta_box_cb'           => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
    'show_admin_column'     => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
    '_builtin'              => false,
    'show_in_quick_edit'    => null, // по умолчанию значение show_ui
) );
}
add_action('init', 'register_post_types');
function register_post_types(){
register_post_type('menu_post', array(
    'label'  => null,
    'labels' => 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'  => '', // для родителей (у древовидных типов)
        'menu_name'          => 'Меню Халабуды', // название меню
    ),
    'description'         => '',
    'public'              => true,
    'publicly_queryable'  => null, // зависит от public
    'exclude_from_search' => null, // зависит от public
    'show_ui'             => null, // зависит от public
    'show_in_menu'        => null, // показывать ли в меню адмнки
    'show_in_admin_bar'   => null, // по умолчанию значение show_in_menu
    'show_in_nav_menus'   => null, // зависит от public
    'show_in_rest'        => null, // добавить в REST API. C WP 4.7
    'rest_base'           => null, // $post_type. C WP 4.7
    'menu_position'       => 9,
    'menu_icon'           => 'dashicons-clipboard',
    //'capability_type'   => 'post',
    //'capabilities'      => 'post', // массив дополнительных прав для этого типа записи
    //'map_meta_cap'      => null, // Ставим true чтобы включить дефолтный обработчик специальных прав
    'hierarchical'        => false,
    'supports'            => array('title','editor','title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'), // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'
    'taxonomies'          => array('menu_tax'),
    'rewrite'             => array( 'slug'=>'menu/%menu_tax%', 'with_front' => false ),
    'has_archive'         => 'menu_post', // если нужна страница архива тут указываем её ярлык а не true
    'query_var'           => true,
) );
}

## Отфильтруем ЧПУ произвольного типа
// сам фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'products_permalink', 1, 2);
function products_permalink( $permalink, $post ){
// выходим если это не наш тип записи: без холдера %products%
if( strpos($permalink, '%menu_tax%') === FALSE )
    return $permalink;
// Получаем элементы таксы
$terms = get_the_terms($post, 'menu_tax');
// если есть элемент заменим холдер
if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
    $taxonomy_slug = $terms[0]->slug;
// элемента нет, а должен быть...
else
    $taxonomy_slug = 'no-products';
return str_replace('%menu_tax%', $taxonomy_slug, $permalink );
}

теперь например если мы создаем пост с названием lobster-v-souse который лежит в категории hosper-menu то URI будет выглядеть так - menu/hosper-menu/lobster-v-souse/ если мы забьем в адресную строку menu/hosper-menu/ то выведутся все посты в этой категории, но как получить вообще все посты этого типа во всех категориях ? Если набрать URI /menu/ то получаю not-found. Помогите найти решение пожалуйста.

Answer 1

Все посты типа menu_post

http://site.org/?post_type=menu_post

Посты типа menu_post в таксономии термин_таксономии

http://site.org/?post_type=menu_post&menu_tax=термин_таксономии
READ ALSO
Как спарсить текст тега strong

Как спарсить текст тега strong

Как вот на этой странице используя PhpQuery спарсить информацию о заказчике (то что выделено жирным шрифтом)?

180
PHP реализация наследования

PHP реализация наследования

Имеется следующая архитектура (PHP):

153
Анализ php-кода на совместимость с php 5.2.4

Анализ php-кода на совместимость с php 5.2.4

Где найти анализатор кода на совместимость с php 52

146
std::to_string без создания новой строки

std::to_string без создания новой строки

У меня уже имеется std::string str, у которой strcapacity() >= 1024(т

189