Intereting Posts
проверить current_theme_supports в admin_menu hook Указание нескольких категорий в URL (постоянная ссылка)? add_image_size создает множество изображений (разных размеров) Как показать большое изображение на странице проверки с помощью WP Ecommerce plugin Получить таксономию текущей страницы Иерархия в многоузловом пространстве Пользовательский цикл с использованием короткого кода в шаблоне пользовательской страницы Файл .htaccess по умолчанию для WordPress? Я изменил Functions.php и теперь получаю «невозможно декодировать необработанные данные NSURLErrorDomain: -1015» (не пусто) Лучший способ вставить в очередь очень популярные скрипты, такие как bootstrap и font awesome Ограничить количество виджетов в боковых панелях Пользовательские таксономические настройки Устаревший вызов API TinyMCE: windowManager.createInstance (..) Обновить страницу после действия формы Если (категория / тег отмечен), то (display header2php)

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

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

Прежде всего, если вы хотите показать таксономию метабокс только для персонализированного типа сообщения, зарегистрируйте таксономию только для этого настраиваемого типа сообщений, передав имя типа пользовательского типа в качестве аргумента в 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 } }