Php 从子文件夹multisite上的CPT permalink中删除slug(可能是htaccess问题)

Php 从子文件夹multisite上的CPT permalink中删除slug(可能是htaccess问题),php,wordpress,.htaccess,mod-rewrite,wordpress-theming,Php,Wordpress,.htaccess,Mod Rewrite,Wordpress Theming,我将此脚本添加到我的站点,以从永久链接中删除我的CPT的slug: 而且效果很好 我现在遇到的问题是,我使用子文件夹激活了多站点功能,而此脚本不再工作 此URL以前是有效的:,但现在直接转到404页面,而这是post URL: 如何调整函数,使其将此特定CPT的永久链接返回到? function na_remove_slug( $post_link, $post, $leavename ) { if ( 'play_states' != $post->post_type || '

我将此脚本添加到我的站点,以从永久链接中删除我的CPT的slug:

而且效果很好

我现在遇到的问题是,我使用子文件夹激活了多站点功能,而此脚本不再工作

此URL以前是有效的:,但现在直接转到404页面,而这是post URL:

如何调整函数,使其将此特定CPT的永久链接返回到?

function na_remove_slug( $post_link, $post, $leavename ) {

    if ( 'play_states' != $post->post_type || 'publish' != $post->post_status ) {
        return $post_link;
    }

    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );

    return $post_link;
}
add_filter( 'post_type_link', 'na_remove_slug', 10, 3 );

function na_parse_request( $query ) {

    if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }

    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'post', 'play_states', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'na_parse_request' );

或者,这可能是一个.htaccess问题。由于该站点比为子文件夹multisite分配的时间早,我不得不强制wordpress接受它。以下是我当前的htaccess文件:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

# END WordPress

你有没有找到这个@mdnash的解决方案?我在处理完全相同的问题,唯一的区别是我用Nginx而不是Apache。你有没有找到这个@mdnash的解决方案?我在处理完全相同的问题,唯一的区别是我用Nginx而不是Apache。