Как удалить слизняк из Пользовательского Типа Поста? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь удалить слаг из пользовательского типа поста под названием Статьи. Я изучал StackOverflow и нашел много обсуждений, но они не работают. Если вы используете rewrite с slug = "/", это портит другие посты и страницы. Так может ли WordPress удалить слизняк или нет? Спасибо.

Я уже пробовал разные решения от переполнения стека.

    'rewrite' => array( 
        'slug'          => '/',
        'with_front'    => false 
    ),

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете попробовать это:

fw-portfolio - это имя слаг-пост-типа, которое вы должны включить в свой

 function gp_remove_cpt_slug( $post_link, $post ) {
        if ( 'fw-portfolio' === $post->post_type && 'publish' === $post->post_status ) {
            $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
        }
        return $post_link;
    }
    add_filter( 'post_type_link', 'gp_remove_cpt_slug', 10, 2 );


    function gp_add_cpt_post_names_to_main_query( $query ) {
        // Bail if this is not the main query.
        if ( ! $query->is_main_query() ) {
            return;
        }
        // Bail if this query doesn't match our very specific rewrite rule.
        if ( ! isset( $query->query['page'] ) || 2 !== count( $query->query ) ) {
            return;
        }
        // Bail if we're not querying based on the post name.
        if ( empty( $query->query['name'] ) ) {
            return;
        }
        // Add CPT to the list of post types WP will include when it queries based on the post name.
        $query->set( 'post_type', array( 'post', 'page', 'fw-portfolio' ) );
    }
    add_action( 'pre_get_posts', 'gp_add_cpt_post_names_to_main_query' );
...