Intereting Posts
Расположение метаданных изображения на моем сервере Как показать боковую панель только на определенной странице? Несколько циклов на странице результатов поиска? Элементы, плавающие друг над другом при изменении размера или проверки сайта на мобильных устройствах. Две тысячи двенадчать используя $ wpdb для вставки формы в сообщение Должен ли я использовать Pre Get Posts или WP_Query Добавление регулярного выражения в feedwordpress удалять только сообщение в запросе / для каждого утверждения (передняя часть) Как вставить переменное значение в «shortCRode плагина myCRED Почему этот код WPDB создает пустую ошибку WPDB? Объединение нескольких файлов CSS в один для оптимизации Должно ли все функции functions.php подключаться или фильтроваться? Любой способ update_post_meta с содержимым html? Он лишается и становится пустым Похоже, изменение размера изображения плохо работает Каков лучший плагин WordPress для резервных копий Amazon s3?

Налоговый термин как cpt slug в permalink – перенаправление не работает на дочернем cpt post

Я поменял swpt slug на термин таксономии, ниже кода тестируется и работает.

Существует также переадресация ниже, но, к сожалению, работает только на одном уровне сообщений cpt, так как я использую иерархические cpt (родительские / дочерние сообщения), у дочернего сообщения получается 404, все остальное работает так, как ожидалось.

У кого-нибудь есть мысли о том, как это решить, спасибо.

add_filter('post_link', 'rudr_post_type_permalink', 20, 3); add_filter('post_type_link', 'rudr_post_type_permalink', 20, 3); function rudr_post_type_permalink($permalink, $post_id, $leavename) { $post_type_name = 'product'; // post type name, you can find it in admin area or in register_post_type() function $post_type_slug = 'product'; // the part of your product URLs, not always matches with the post type name $tax_name = 'product_cat'; // the product categories taxonomy name $post = get_post( $post_id ); if ( strpos( $permalink, $post_type_slug ) === FALSE || $post->post_type != $post_type_name ) // do not make changes if the post has different type or its URL doesn't contain the given post type slug return $permalink; $terms = wp_get_object_terms( $post->ID, $tax_name ); // get all terms (product categories) of this post (product) if ( !is_wp_error( $terms ) && !empty( $terms ) && is_object( $terms[0] ) ) // rewrite only if this product has categories $permalink = str_replace( $post_type_slug, $terms[0]->slug, $permalink ); return $permalink; } add_filter('request', 'rudr_post_type_request', 1, 1 ); function rudr_post_type_request( $query ){ global $wpdb; $post_type_name = 'product'; // specify your own here $tax_name = 'product_cat'; // and here $slug = $query['attachment']; // when we change the post type link, WordPress thinks that these are attachment pages // get the post with the given type and slug from the database $post_id = $wpdb->get_var( " SELECT ID FROM $wpdb->posts WHERE post_name = '$slug' AND post_type = '$post_type_name' " ); $terms = wp_get_object_terms( $post_id, $tax_name ); // our post should have the terms if( isset( $slug ) && $post_id && !is_wp_error( $terms ) && !empty( $terms ) ) : // change the query unset( $query['attachment'] ); $query[$post_type_name] = $slug; $query['post_type'] = $post_type_name; $query['name'] = $slug; endif; return $query; } 

301 переадресовать из старых почтовых URL-адресов

 add_action('template_redirect', 'rudr_post_type_redirect'); function rudr_post_type_redirect() { $post_type_name = 'product'; // specify your own here $post_type_slug = 'product'; // here $tax_name = 'platform'; // and here if( strpos( $_SERVER['REQUEST_URI'], $post_type_slug ) === FALSE) // do not redirect if the URL doesn't contain the given post type slug return; if( is_singular( $post_type_name ) ) : // if post type page global $post, $wp_rewrite; $terms = wp_get_object_terms( $post->ID, $tax_name ); // get terms attached if ( !is_wp_error( $terms ) && !empty( $terms ) && is_object( $terms[0] ) ) : wp_redirect( site_url() . '/' . $wp_rewrite->front . '/' . $terms[0]->slug . '/' . $post->post_name, 301 ); // wp_redirect( get_permalink( $post->ID ), 301 ); // depends on the previous code from this post exit(); endif; endif; } 

Solutions Collecting From Web of "Налоговый термин как cpt slug в permalink – перенаправление не работает на дочернем cpt post"