Intereting Posts
Как определить, находится ли я на первой странице разбивки на страницы? Как исправить неинициализированное смещение строки: ошибка на флажке в WP Settings API Почему я не могу добавить скриптовый код в настройки темы без 403-запрещенных? Как удалить содержимое с вкладки «Справка»? Где я могу всегда находить цену плагина get_post orderby не работает в плагине wp_customize_image_control устаревшая альтернатива add_tab Можно добавить «Четные / Нечетные классы» к вложениям изображений через wp_get_attachment_image? как группировать настраиваемые типы сообщений Всплывающее успешное сообщение в Fancybox? Как я могу вручную обновить переводы? Сортировка сообщений по настраиваемым значениям полей с помощью выпадающего меню Отсутствуют атрибуты страницы Как использовать задание wp cron для запуска функции Пагинация дает дополнительную страницу без результатов

CPT, метаданные, параметр url

кто-то может указать мне лекцию, которая могла бы объяснить мне, как создать какой-то «фильтр», пройденный красивой ссылкой?

Позвольте мне объяснить себя, у меня есть специальный тип сообщения, называемый зрелищем, и у меня есть meta_key, который содержит массив дат для этого зрелища. Я знаю, как извлекать дату и фильтровать их, если я дам явно какой-то фильтр на мой экран, моя проблема не идет оттуда, чего я пытаюсь достичь, – это доступ

http://myurl.com/spectacles (показать предстоящие очки – уже сделано ) http://myurl.com/spectacles/2014 (показать все спектакль 2014) http://myurl.com/spectacles/2014/01 (показать все зрелище с января 2014 года) http://myurl.com/spectacles/2014/01/01 (показать все зрелище с 1 января 2014 года) http://myurl.com/spectacle/name-of-the-spectacle (показать это зрелище – уже сделано )

Все, что мне нужно – это способ включить тезисы в постоянную ссылку и извлечь тезисы, чем я буду делать то, что хочу, у меня уже есть свои функции фильтрации.

Это то, что я сделал до сих пор:

// Register Custom Post Type function build_cpt() { $labels = array( 'name' => _x( 'Programmation', 'Post Type General Name', 'mlog_lang' ), 'singular_name' => _x( 'Spectacles', 'Post Type Singular Name', 'mlog_lang' ), 'menu_name' => __( 'Programmation', 'mlog_lang' ), 'all_items' => __( 'Tous les spectacles', 'mlog_lang' ), 'view_item' => __( 'Afficher ce spectacle', 'mlog_lang' ), 'add_new_item' => __( 'Ajouter un spectacle', 'mlog_lang' ), 'add_new' => __( 'Ajouter un spectacle', 'mlog_lang' ), 'edit_item' => __( 'Modifier un spectacle', 'mlog_lang' ), 'update_item' => __( 'Mettre à jour ce spectacle', 'mlog_lang' ), 'search_items' => __( 'Rechercher un spectacle', 'mlog_lang' ), 'not_found' => __( 'Aucun spectacle trouvé', 'mlog_lang' ), 'not_found_in_trash' => __( 'Aucun spectacle dans la corbeille', 'mlog_lang' ), ); add_rewrite_tag( '%event-year%', '(\d{4})' ); //add_rewrite_tag( '%event-month%', '(\d{2})' ); //add_rewrite_tag( '%event-day%', '(\d{2}|\d{1})' ); $rewrite = array( //'slug' => 'spectacles/%event-year%/%event-month%/%event-day%/', 'slug' => 'spectacles/%event-year%/', 'with_front' => true, 'pages' => true, 'feeds' => true, ); $args = array( 'label' => __( 'programmation', 'mlog_lang' ), 'description' => __( 'Liste des spectacles', 'mlog_lang' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'revisions' ), 'taxonomies' => array(), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => false, 'show_in_admin_bar' => false, 'menu_position' => 4, 'menu_icon' => 'dashicons-groups', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'rewrite' => $rewrite, 'capability_type' => 'page', ); register_post_type( 'programmation', $args ); 

Теперь я могу получить доступ:

http://myurl.com/spectacles/2014

но он показывает домашнюю страницу вместо archive-programation.php

И я не могу получить доступ:

http://myurl.com/spectacles/name-of-the-spectacle

Solutions Collecting From Web of "CPT, метаданные, параметр url"

Хороший ответ был от @Milo, но он не разместил никакого кода, поэтому я отправляю сюда свой результат, потому что люди приходят сюда для правильного ответа.

 /* Add query var to authorized query var... */ add_filter( 'query_vars', 'add_spectacles_query_vars' ); function add_spectacles_query_vars( $query_vars ) { $query_vars[] = 'spectacles-year'; $query_vars[] = 'spectacles-month'; $query_vars[] = 'spectacles-day'; return $query_vars; } /* Add rewrite rule */ add_action( 'init', 'add_spectacles_rewrite_rule' ); function add_spectacles_rewrite_rule() { add_rewrite_rule( 'spectacles\/(on){1}\/{1}(\d{4})+\/?(\d{2})?\/?(\d{2}|d{1})?', 'index.php?post_type=programmation&spectacles-year=$matches[2]&spectacles-month=$matches[3]&spectacles-day=$matches[4]', 'top' ); //flush_rewrite_rules(); } 

Чем в моем шаблоне я могу пойти с

 $spectacle_year = get_query_var('spectacles-year'); $spectacle_month = get_query_var('spectacles-month'); $spectacle_day = get_query_var('spectacles-day'); 

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

 add_action( 'pre_get_posts', 'spectacles_archvies_pre_get_posts', 11 ); function spectacles_archvies_pre_get_posts($query) { if( !empty($query->query_vars['spectacles-year']) ) { /* Do your stuff here... */ } }