Intereting Posts
Невозможно загрузить пользовательский файл CSS в дочернюю тему «Статическое» детское меню с аккордией Использование строки запроса для редактирования страницы CPT Пользовательская таксономия переписывается с использованием налогового имени вместо перезаписи Sharethis социальная доля счета retirve при изменении домена Переопределить тему CSS с помощью CSS из плагина Крюк при добавлении или редактировании определенного пользовательского типа сообщений? пользовательский, отправленный из сообщения в боковой панели pagination не работает для category.php (пользовательские типы сообщений в категориях) Пользовательский WordPress переписать Я хочу загрузить предварительно созданную php-страницу (и связанные скрипты / стили / каталоги) в качестве первой страницы. Как мне это сделать? Примечание: wp_get_http <strong> устарел </ strong> с версии 4.4.0! Получить категории с сообщениями по настраиваемому значению поля Получить отрывок, используя get_the_excerpt вне цикла Пользовательская тема – страницы в меню

Удалите родительские пули из 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, который я добавляю) .