Intereting Posts
Добавление пользовательских кнопок TinyMCE при использовании teeny_mce_before_init Как включить AMP для настраиваемого единого шаблона с настраиваемой базой данных Как применяются правила перезаписи в WordPress? API-интерфейс JSON API не отображается. Расширенный поиск WordPress Добавление бита 'style =' к выводу image_send_to_editor Как я могу создавать пользовательские статические виджеты / области на моей домашней странице? код плагина вытаскивает информацию из базы данных в одном экземпляре, а не в другую. Что не так? Как добавить пользовательский CSS (параметр темы) в TinyMCE? Как показать родительскую и дочернюю категорию WordPress с помощью другого шаблона? Как отключить страницу регистрации Multisite? Удалить содержимое before_widget / after_widget из Wp_Widget_Text Удалить избранные изображения из сообщений, более ранних, чем определенная дата Перемещение wp с сервера на другой, с другим администратором Замена содержимого вложения изображений с помощью API

Удалите родительские пули из URL-адресов на трех типах таможенных постов

Добрый вечер всем.

У меня есть три пользовательских типа сообщений, и я хочу удалить из них родительские пули.

$args = array( 'rewrite' => array('slug' => '/','with_front' => true), ); 

functions.php

 function wpse_101072_flatten_hierarchies( $post_link, $post ) { if ( 'CPT1' != $post->post_type ) return $post_link; $uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; } return str_replace( $uri, '', $post_link ); } add_filter( 'post_type_link', 'wpse_101072_flatten_hierarchies', 10, 2 ); 

В этой точке мне интересно, как можно использовать функцию wpse_101072_flatten_hierarchies и добавить внутри случаев других 2 CPT.

Solutions Collecting From Web of "Удалите родительские пули из URL-адресов на трех типах таможенных постов"

Просто добавьте дополнительные условия в конструкцию if( 'CPT1' != $post->post_type ) . Отделите и описайте связь между выражениями условий с помощью логических операторов :

 function wpse_222797a_flatten_hierarchies( $post_link, $post ) { // IF( 'CPT1' IS NOT the post_type // AND 'CPT2' IS NOT the post_type // AND 'CPT3' IS NOT the post_type ) // THEN exit the function and RETURN the unmodified link. if( 'CPT1' != $post->post_type && 'CPT2' != $post->post_type && 'CPT3' != $post->post_type ) return $post_link; // If execution reaches this point, the post_type must be 'CPT1', 'CPT2', // or 'CPT3', so produce and return a modified link. // [...] } add_filter( 'post_type_link', 'wpse_222797a_flatten_hierarchies', 10, 2 ); 

В качестве альтернативы проверьте текущий тип сообщения на массив пост-типов, требующих модификации ссылок, используя in_array() :

 function wpse_222797b_flatten_hierarchies( $post_link, $post ) { $modified_post_types = [ 'CPT1', 'CPT2', 'CPT3' ]; // IF the post_type IS NOT in the $modified_post_types array // THEN exit the function and return the unmodified link if ( ! in_array( $post->post_type, $modified_post_types ) ) return $post_link; // If execution reaches this point, the post_type must be one of the ones // in the $modified_post_types array, so produce and return a modified link. // [...] } add_filter( 'post_type_link', 'wpse_222797b_flatten_hierarchies', 10, 2 ); 

Другое решение: я пытаюсь переименовать правило перезаписи родительского / URL-адреса из массива $ args из CPT из CPT1. Я следую тому же пути для CPT2 и CPT3. Поэтому в попрошайничестве я хотел создать из этого: mydomain.com/CPT_1/CPT_1 : mydomain.com/CPT_1

но теперь у меня есть мысли, чтобы создать это:

mydomain.com/about-us/CPT_1

 $args = array( 'label' => __( 'CPT 1', 'text_domain' ), 'description' => __( 'Post Type Description', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'post-formats', ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => false, 'can_export' => false, 'has_archive' => true, 'exclude_from_search' => true, 'publicly_queryable' => true, 'rewrite' => array( 'slug' => 'my-slug' ), 'capability_type' => 'post', ); register_post_type( 'CPT_1', $args ); 

в functions.php

 function name1_flatten_hierarchies( $post_link, $post ) { if ( 'CPT_1' != $post->post_type ) { return $post_link; } $uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; } return str_replace( $uri, '', $post_link ); } add_filter( 'post_type_link', 'name1_flatten_hierarchies', 10, 2 ); 

второй сплющенный

 function name2_flatten_hierarchies( $post_link, $post ) { if ( 'CPT_2' != $post->post_type ) { return $post_link; } $uri = ''; foreach ( $post->ancestors as $parent ) { $uri = get_post( $parent )->post_name . "/" . $uri; } return str_replace( $uri, '', $post_link ); } add_filter( 'post_type_link', 'name2_flatten_hierarchies', 10, 2 ); 

Мое правило перезаписи:

 function my_rewrite_rule() { add_rewrite_rule( '^CPT_1/([^/]+)/?$', 'index.php?post_type=CPT_1&name=$matches[1]', 'top', '^CPT_2/([^/]+)/?$', 'index.php?post_type=CPT_2&name=$matches[1]', 'top' ); add_permastruct( 'about-us', '/about-us/%about-us%/' ); } add_action( 'init', 'my_rewrite_rule', 10 ); 

Но в этом случае правила перезаписи работают, потому что CPT_2 показывает мне CPT, но для CPT_1 не показывать меня и перенаправлять меня в index.php (CPT_1 – это первый CPT, который я добавляю) .