Intereting Posts
Обычное ли иметь канал Feedburner в блоге WordPress? Как получить чистый код для галереи? Пользовательский тип полевого массива типа Post Отображение произвольного HTML или содержимого на боковой панели Расположение фильтров с параметрами 20-й темы? Пользовательское поле не обновляется, когда значение пустое Выход из системы с помощью ссылки (без нее) как вызвать WordPress API из другой существующей системы PHP Рекомендуемое использование Bootstrap или JQuery-UI в разработке WP / plugin? Удалить правила перезаписи, созданные плагином во время деактивации Применение настраиваемого фильтра вместо the_content не отображает вставки Как получить ярлыки из сообщения Настроить, какой tempalte использует страница с функцией? Лучший способ создания страниц, таких как «около», «контакт» и т. Д. Связанный с WordPress плагин – показывать только, если связанный контент

Включить пользовательские типы сообщений в виджет категорий

Поэтому я получил довольно простую настройку, один CPT с category по умолчанию и post_tag качестве таксономий.

Скажем, у меня есть 1 запись и 1 запись CPT, присвоенная той же категории. Мне нужно, чтобы это отразилось и внутри виджета категории.

Мне удалось отобразить их оба на странице категории через фильтр request чтобы ссылки, сгенерированные виджетами, работали.

Проблема в том, что если сообщение не существует, виджет не будет генерировать ссылку для категории (считая ее пустой).

Кроме того, количество элементов неверно, 1 вместо 2.

Выкапывая код виджета, это вызывает проблемы:

 wp_list_categories(apply_filters('widget_categories_args', $cat_args)); 

Поэтому я могу изменять аргументы через фильтр, но wp_list_categories() не имеет аргумента для того, какой тип сообщения он должен использовать.

Я видел, как кто-то еще сталкивался с проблемой раньше:

http://wordpress.org/support/topic/custom-post-types-and-category-widget – не повезло

http://themehybrid.com/support/topic/custom-post-types-and-category-widget – тот же парень, не может читать ответы Джастина, но я не верю, что снова не повезло. он подал билет в конце, который закрылся

Мысли о решении

Мне бы очень хотелось не копировать / вставлять код виджета по умолчанию и создавать новый, а решать это с помощью фильтра.

Говоря это, поможет ли это обычное ходоку? Есть идеи?

В качестве побочного решения я решил аналогичную проблему с виджетами Архива, используя это:

 /* * Add CPTs to wp_get_archives() * http://bajada.net/2010/07/15/adding-custom-post-types-to-wp_get_archives */ function ucc_getarchives_where_filter( $where , $r ) { $args = array( 'public' => true , '_builtin' => false ); $output = 'names'; $operator = 'and'; $post_types = get_post_types( $args , $output , $operator ); $post_types = array_merge( $post_types , array( 'post' ) ); $post_types = "'" . implode( "' , '" , $post_types ) . "'"; return str_replace( "post_type = 'post'" , "post_type IN ( $post_types )" , $where ); } add_filter( 'getarchives_where' , 'ucc_getarchives_where_filter' , 10 , 2 ); 

Ура!

Solutions Collecting From Web of "Включить пользовательские типы сообщений в виджет категорий"

У меня есть «actor» cpt, и, похоже, он автоматически добавляется в запрос:

 SELECT object_id, term_taxonomy_id FROM wp_term_relationships INNER JOIN wp_posts ON object_id = ID WHERE term_taxonomy_id IN (38,40,30,11,32,34,29,39,35,9,31,19,33,37,42,41,27,25,36,1,26) AND post_type IN ('post', 'actor') AND post_status = 'publish' Call from: require, require_once, include, get_sidebar, get_template_part, locate_template, load_template, require, dynamic_sidebar, call_user_func_array, WP_Widget->display_callback, WP_Widget_Categories->widget, wp_list_categories, get_categories, get_terms, _pad_term_counts 

(Использование плагина Debug Queries )

И это определение CPT:

 register_post_type('actor', array( 'public' => true, 'labels' => $labels, 'has_archive' => 'actors', 'taxonomies' => array( 'category' ) ));