第一个帖子(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