Я создал кастомный тип поста и привязал к нему таксономию, делал все по сайту камы, почти все урлы работают правильно кроме одного момента, не могу вывести все записи кастомного типа поста. Код:
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. Помогите найти решение пожалуйста.
Все посты типа menu_post
http://site.org/?post_type=menu_post
Посты типа menu_post
в таксономии термин_таксономии
http://site.org/?post_type=menu_post&menu_tax=термин_таксономии
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как вот на этой странице используя PhpQuery спарсить информацию о заказчике (то что выделено жирным шрифтом)?
Где найти анализатор кода на совместимость с php 52
У меня уже имеется std::string str, у которой strcapacity() >= 1024(т