php – 具有相同slug的自定义帖子使用相同的slug重定向到错误的
我有2个自定义帖子类型的帖子.视频帖子和城市指南帖子
第一个帖子(Video Post)包含url: 104.130.239.132/rick-owens/和第二个Post(City-Guide Post)conatins url: http://104.130.239.132/city-guide/rick-owens/(city-guide是永久链接结构,它是自定义帖子类型的名称). 因此,每当我们尝试访问第一个网址时,问题就出现了,它显示了第二个网址的模板和内容.第二个网址是最新发布的.我试图通过禁用Yoast SEO插件来解决仍然没有变化,也完成了我的永久链接刷新仍然得到相同的结果. 附加Yoast SEO片段为第一个url帖子:和Yoast SEO片段的第二个url帖子 加成: 这是我的CPT代码. 1.视频帖子: $labels = array( 'name' => _x( 'Videos','Post Type General Name','roots' ),'singular_name' => _x( 'Video','Post Type Singular Name','menu_name' => __( 'Video Posts','parent_item_colon' => __( 'Parent Video:','all_items' => __( 'All Videos','view_item' => __( 'View Video','add_new_item' => __( 'Add New Video','add_new' => __( 'Add New','edit_item' => __( 'Edit Video','update_item' => __( 'Update Video','search_items' => __( 'Search Video','not_found' => __( 'Not found','not_found_in_trash' => __( 'Not found in Trash',); $rewrite = array( 'slug' => 'rewrite','with_front' => true,'pages' => true,'feeds' => true,); $args = array( 'label' => __( 'video','description' => __( 'Videos Post Type','labels' => $labels,'supports' => array( 'title','editor','excerpt','author','thumbnail','comments','trackbacks','revisions','custom-fields',),'taxonomies' => array( 'category','post_tag' ),'hierarchical' => false,'public' => true,'show_ui' => true,'show_in_menu' => true,'show_in_nav_menus' => true,'show_in_admin_bar' => true,'menu_position' => 5,'can_export' => true,'has_archive' => true,'exclude_from_search' => false,'publicly_queryable' => true,'rewrite' => $rewrite,'capability_type' => 'post','yarpp_support' => TRUE ); register_post_type( 'video',$args ); 2.城市指南帖子: function register_post_types(){ register_post_type( 'city-guide',[ 'has_archive' => TRUE,'hierarchical' => TRUE,'labels' => [ 'name' => 'City Guide' ],'public' => TRUE,'supports' => ['editor','page-attributes','title','excerpt'],'taxonomies' => array('post_tag') ] ); add_image_size( 'ipad-city-thumb',650,TRUE ); } add_action( 'init',__NAMESPACE__.'register_post_types',20 ); 我在我的代码中有这个 remove /rewrite/ slug from custom permalinks,to allow domain/slug for all post types public function post_link_rewrite( $post_link,$post,$leavename ){ $post_link = str_replace( '/rewrite/','/',$post_link ); return $post_link; }
这个问题非常普遍,因为两个帖子类型的slug名称相似,将显示最新的一个.它现在没有反映到帖子类型.我假设你在永久链接结构中选择了“post-name”或%postname%.
要解决这个问题,第一个也是最简单的方法是更改??其中一个帖子的帖子. 另一种方法是通过WordPress的重写类函数从functions.php更改post类型的永久链接结构.为此,您必须查看帖子标题下方的链接.这是因为要找出特定自定义帖子类型的帖子类型的slu .. 我在本地安装中实现了您提供的代码.现在我有2个自定义的帖子类型和你的名字“rick owens”这个帖子将是“rick-owens”.首先,如上所述,显示相同的错误. 我通过在functions.php中添加此函数解决了这个问题 function add_rewrite_rules_custom_post(){ global $wp_rewrite; $structure = 'rewrite/%rewrite%'; $structure1 = 'city-guide/%city-guide%'; $wp_rewrite->add_permastruct('%rewrite%',$structure,false); $wp_rewrite->add_permastruct('%city-guide%',$structure1,false); } add_action('init','add_rewrite_rules_custom_post'); 以上代码适用于我并经过测试,也应该适合您. 正如我已经提到的,您应该知道该特定帖子的编辑页面中的帖子网址. 对于视频自定义帖子类型,帖子网址应如下所示: www.siteurl.com/rewrite/rick-owens 对于城市指南帖子类型,帖子网址应如下所示: www.siteurl.com/city-guide/rick-owens 如果我是正确的,同样的链接结构也应该在你的页面中,所以代码应该在我提供的顶部.如果你有不同于我上面提到的链接,那么在我提供的functions.php代码中根据它进行更改.例如, www.siteurl.com/video/rick-owens 然后将functions.php代码更改为 $structure = 'video/%rewrite%'; see img for video url check 如果您有城市指南自定义帖子类型, www.siteurl.com/city_guide/rick-owens $structure1 = 'city_guide/%rewrite%'; see img for city-guide url check 这是另一个选项,如果在我的项目中发生与您的冲突类似的冲突,我通常会这样做.如果你没有得到它,请在这篇文章中提及我. 希望这会奏效.
请使用此代码将您的帖子类型更新为Wordpress Core功能 function update_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','page','video','rewrite' ) ); } } add_action( 'pre_get_posts','update_parse_request' ); 希望这段代码对您有用,请删除上面提到的代码,不要忘记更新永久链接. 谢谢
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |