Php 从子文件夹multisite上的CPT permalink中删除slug(可能是htaccess问题)
我将此脚本添加到我的站点,以从永久链接中删除我的CPT的slug: 而且效果很好 我现在遇到的问题是,我使用子文件夹激活了多站点功能,而此脚本不再工作 此URL以前是有效的:,但现在直接转到404页面,而这是post URL: 如何调整函数,使其将此特定CPT的永久链接返回到?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 || '
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。