Intereting Posts
Остановить перенаправление WordPress из / ключевое слово в / some-post-contains-keyword / Редактирование сложных страниц в визуальном режиме Увеличить выход Walker Как добавить несколько элементов флажка в мультимедийные вложения? Добавьте пользовательский текст, чтобы узнать больше о the_excerpt и <- больше -> Как показать все связанные с почтой таксономии Настройка страницы «прослушивания» API Я пытаюсь использовать API расширения группы в BuddyPress, но продолжаю получать фатальную ошибку Переходный режим не ведет себя так, как ожидалось редактирование интерфейса с помощью iFrames, лучший подход? Глубокая привязка к вкладке аккордеона с помощью Visual Composer Чрезвычайно медленный сайт WordPress с 6000 сообщениями Кнопка настройки JetPack JSON API не отображается Как перенаправить одну страницу на субдомен Сделать каталог плагина распознанным номера новой версии

Пользовательская таксономия, специфичная для типа пользовательской публикации

Я хочу создать пользовательскую таксономию, которая ведет себя аналогично типу post, поскольку категория ведет себя к сообщениям по умолчанию (по причине /% category% /% postname% / permalink structure), так что сообщения в пользовательских типах сообщений отображается как www.example.com/custom-post-type/custom-taxonomy-name/post-name. Также я хочу, чтобы мета-окно категории отображалось только при добавлении нового сообщения по умолчанию, а не при добавлении нового сообщения в пользовательский post type и поле пользовательской таксономии, чтобы появляться только при добавлении нового сообщения в пользовательский тип сообщения, а не при добавлении нового сообщения по умолчанию.

Solutions Collecting From Web of "Пользовательская таксономия, специфичная для типа пользовательской публикации"

Прежде всего, если вы хотите показать таксономию метабокс только для персонализированного типа сообщения, зарегистрируйте таксономию только для этого настраиваемого типа сообщений, передав имя типа пользовательского типа в качестве аргумента в register_taxonomy. Поступая так, метабокс таксономии появляется только для персонализированного типа сообщения. Если вы не хотите показывать категорию метабокс на пользовательский тип сообщения, тогда удалите категорию терминов как аргумент при регистрации пользовательского типа сообщения и вместо этого добавьте имя таксономического slug, как это 'таксономии' => массив ('post_tag', 'your_taxonomy_name'). , вот код, как я это достиг. Я зарегистрировал пользовательскую таксономию с slug themes_categories под настраиваемыми темами типа сообщения

function themes_taxonomy() { register_taxonomy( 'themes_categories', //The name of the taxonomy. Name should be in slug form (must not contain capital letters or spaces). 'themes', //post type name array( 'hierarchical' => true, 'label' => 'Themes store', //Display name 'query_var' => true, 'rewrite' => array( 'slug' => 'themes', // This controls the base slug that will display before each term 'with_front' => false // Don't display the category base before ) ) ); } add_action( 'init', 'themes_taxonomy'); 

Затем, чтобы изменить постоянную ссылку, я создал следующую функцию

 function filter_post_type_link($link, $post) { if ($post->post_type != 'themes') return $link; if ($cats = get_the_terms($post->ID, 'themes_categories')) $link = str_replace('%themes_categories%', array_pop($cats)->slug, $link); return $link; } add_filter('post_type_link', 'filter_post_type_link', 10, 2); 

Затем я зарегистрировал пользовательский тип сообщения с темами slug, как показано ниже.

 //Registering Custom Post Type Themes add_action( 'init', 'register_themepost', 20 ); function register_themepost() { $labels = array( 'name' => _x( 'Themes', 'my_custom_post','custom' ), 'singular_name' => _x( 'Theme', 'my_custom_post', 'custom' ), 'add_new' => _x( 'Add New', 'my_custom_post', 'custom' ), 'add_new_item' => _x( 'Add New ThemePost', 'my_custom_post', 'custom' ), 'edit_item' => _x( 'Edit ThemePost', 'my_custom_post', 'custom' ), 'new_item' => _x( 'New ThemePost', 'my_custom_post', 'custom' ), 'view_item' => _x( 'View ThemePost', 'my_custom_post', 'custom' ), 'search_items' => _x( 'Search ThemePosts', 'my_custom_post', 'custom' ), 'not_found' => _x( 'No ThemePosts found', 'my_custom_post', 'custom' ), 'not_found_in_trash' => _x( 'No ThemePosts found in Trash', 'my_custom_post', 'custom' ), 'parent_item_colon' => _x( 'Parent ThemePost:', 'my_custom_post', 'custom' ), 'menu_name' => _x( 'Themes Posts', 'my_custom_post', 'custom' ), ); $args = array( 'labels' => $labels, 'hierarchical' => false, 'description' => 'Custom Theme Posts', 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'post-formats', 'custom-fields' ), 'taxonomies' => array( 'post_tag','themes_categories'), 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => get_stylesheet_directory_uri() . '/functions/panel/images/catchinternet-small.png', 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'query_var' => true, 'can_export' => true, 'rewrite' => array('slug' => 'themes/%themes_categories%','with_front' => FALSE), 'public' => true, 'has_archive' => 'themes', 'capability_type' => 'post' ); register_post_type( 'themes', $args );//max 20 charachter cannot contain capital letters and spaces } 

Есть несколько вещей, которые вы должны помнить при регистрации пользовательских сообщений. измените параметр has_archive на пользовательское имя slug-типа сообщения, а другое измените имя переписывающего slug как 'slug' => 'custom_post_type_slug /% taxonomy_slug%

Теперь, когда вы добавляете новый тип сообщения на страницу типа записи, вы увидите постоянную ссылку как http://www.example.com/wordpress/themes/%themes_categories%/post-name/ . Если пользовательская таксономия для этого сообщения не выбрана, то постоянная ссылка останется http://www.example.com/wordpress/themes/%themes_categories%/post-name/, которая затем покажет плохой запрос. Чтобы исправить это, мы создаем термин по умолчанию в пользовательской таксономии. (то же самое, что и без категорий в категориях). Добавьте это в functions.php

 function default_taxonomy_term( $post_id, $post ) { if ( 'publish' === $post->post_status ) { $defaults = array( 'themes_categories' => array( 'other'), // ); $taxonomies = get_object_taxonomies( $post->post_type ); foreach ( (array) $taxonomies as $taxonomy ) { $terms = wp_get_post_terms( $post_id, $taxonomy ); if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) { wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy ); } } } } add_action( 'save_post', 'default_taxonomy_term', 100, 2 ); 

Теперь, когда пользовательская таксономия остается пустым, permlaink автоматически становится http://www.example.com/wordpress/themes/other/post-name/ .

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

т.е. зарегистрировать пользовательскую таксономию MY_NEW_CARSS для пользовательских типов сообщений:

 $my_taxon_name = 'MY_NEW_CARSS'; $my_post_types = array('SUB_CAT_1','SUB_CAT_2','SUB_CAT_3'); //REGISTER CUSTOM TAXONOMY ( http://codex.wordpress.org/Function_Reference/register_taxonomy ) //If you aim to register HIERARCHICAL(Parent-ed) post type, read this warning: https://codex.wordpress.org/Function_Reference/register_post_type#hierarchical add_action( 'init', 'my_f32' ); function my_f32() { register_taxonomy( $GLOBALS['my_taxon_name'], array(), array( 'label'=>$GLOBALS['my_taxon_name'], 'public'=>true, 'show_ui'=>true, 'show_admin_column'=>true, 'query_var'=>true, 'hierarchical'=>true, 'rewrite'=>array('with_front'=>true,'hierarchical'=>true), )); } //REGISTER CUSTOM POST TYPE ( http://codex.wordpress.org/Function_Reference/register_post_type ) add_action( 'init', 'myf_63' );function myf_63() { foreach ($GLOBALS['my_post_types'] as $each_Type) { register_post_type( $each_Type, array( 'label'=>$each_Type, 'labels' => array('name'=>$each_Type.' pagess', 'singular_name'=>$each_Type.' page'), 'public' => true, 'publicly_queryable'=> true, 'show_ui'=>true, 'capability_type' => 'post', 'has_archive' => true, 'query_var'=> true, 'can_export' => true, //'exclude_from_search' => false, 'show_in_nav_menus' => true, 'show_in_menu' => 'edit.php?post_type=page',//true, 'menu_position' => 5, 'hierarchical' =>true, 'supports' =>array( 'page-attributes', 'title', 'editor', 'thumbnail' ), 'rewrite' => array('with_front'=>true, ), // 'rewrite' => array("ep_mask"=>EP_PERMALINK ...) OR 'permalink_epmask'=>EP_PERMALINK, )); register_taxonomy_for_object_type('category',$each_Type); //standard categories register_taxonomy_for_object_type($GLOBALS['my_taxon_name'] ,$each_Type); //Custom categories } }