第一个帖子(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;
- }
要解决这个问题,第一个也是最简单的方法是更改其中一个帖子的帖子.
另一种方法是通过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
- $structure = 'video/%rewrite%';
如果您有城市指南自定义帖子类型,
www.siteurl.com/city_guide/rick-owens
- $structure1 = 'city_guide/%rewrite%';
see img for city-guide url check
这是另一个选项,如果在我的项目中发生与您的冲突类似的冲突,我通常会这样做.如果你没有得到它,请在这篇文章中提及我.
希望这会奏效.
Updated Answer as from your updated process
请使用此代码将您的帖子类型更新为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' );
希望这段代码对您有用,请删除上面提到的代码,不要忘记更新永久链接.
谢谢
NOTE: Don’t forget to update you permalink once you placed the code in functions.PHP