我有2个自定义帖子类型的帖子。视频帖子和城市指南帖子 第一篇帖子(视频帖子)包含网址:104.130.239.132/rick-owens/和第二篇帖子(城市指南帖子)网址:http://104.130.239.132/city-guide/rick-owens/(city-guide是永久链接结构,是自定义帖子类型的名称)。 因此,每当我们尝试访问第一个网址时,问题就出现了,它显示了第二个网址的模板和内容。第二个网址是最新发布的。我试图通过禁用Yoast Seo插件来解决仍然没有变化,也完成了我的永久链接刷新仍然得到相同的结果。
为第一个网址发布Yoast SEO代码:和第二个网址的Yoast SEO代码段 任何帮助将不胜感激,谢谢。
增加:
以下是我的CPT代码。
1.视频帖子:
$labels = array(
'name' => _x( 'Videos', 'Post Type General Name', 'roots' ),
'singular_name' => _x( 'Video', 'Post Type Singular Name', 'roots' ),
'menu_name' => __( 'Video Posts', 'roots' ),
'parent_item_colon' => __( 'Parent Video:', 'roots' ),
'all_items' => __( 'All Videos', 'roots' ),
'view_item' => __( 'View Video', 'roots' ),
'add_new_item' => __( 'Add New Video', 'roots' ),
'add_new' => __( 'Add New', 'roots' ),
'edit_item' => __( 'Edit Video', 'roots' ),
'update_item' => __( 'Update Video', 'roots' ),
'search_items' => __( 'Search Video', 'roots' ),
'not_found' => __( 'Not found', 'roots' ),
'not_found_in_trash' => __( 'Not found in Trash', 'roots' ),
);
$rewrite = array(
'slug' => 'rewrite',
'with_front' => true,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => __( 'video', 'roots' ),
'description' => __( 'Videos Post Type', 'roots' ),
'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', 'revisions', 'thumbnail', 'title','custom-fields','excerpt'],
'taxonomies' => array('post_tag')
] );
add_image_size( 'ipad-city-thumb', 650, 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;
}
答案 0 :(得分:2)
使用以下代码更新注册帖子类型代码,如果可能,请使用相同的城市指南帖子类型代码
$labels = array(
'name' => _x( 'Videos', 'Post Type General Name', 'roots' ),
'singular_name' => _x( 'Video', 'Post Type Singular Name', 'roots' ),
'menu_name' => __( 'Video Posts', 'roots' ),
'parent_item_colon' => __( 'Parent Video:', 'roots' ),
'all_items' => __( 'All Videos', 'roots' ),
'view_item' => __( 'View Video', 'roots' ),
'add_new_item' => __( 'Add New Video', 'roots' ),
'add_new' => __( 'Add New', 'roots' ),
'edit_item' => __( 'Edit Video', 'roots' ),
'update_item' => __( 'Update Video', 'roots' ),
'search_items' => __( 'Search Video', 'roots' ),
'not_found' => __( 'Not found', 'roots' ),
'not_found_in_trash' => __( 'Not found in Trash', 'roots' ),
);
$args = array(
'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,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'yarpp_support' => TRUE
);
register_post_type( 'video', $args );
答案 1 :(得分:1)
这个问题很常见,因为两个帖子类型的slug名称相似,将会显示最新的一个。它现在没有反映到帖子类型。我假设你选择了"后名"或永久链接结构中的%postname%。 要解决这个问题,第一个也是最简单的方法是更改其中一个帖子的帖子。
另一种方法是通过WordPress的重写类函数从functions.php更改post类型的永久链接结构。为此,您必须查看帖子标题下方的链接。这是因为要找出特定自定义帖子类型的帖子类型的slu ..
我已在本地安装中实现了您提供的代码。现在我有两个自定义的帖子类型,以及两个名字中的帖子" rick owens"哪个slu will将是" 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%';
如果您有城市指南自定义帖子类型,
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' );
希望此代码对您有用,请删除上面提到的代码,不要忘记更新永久链接。
谢谢
注意:一旦放入代码,请不要忘记更新永久链接 的functions.php
答案 2 :(得分:-1)
在你的Wordpress固定链接设置中,将自定义结构设置为/%category%/%postname%/,然后在你的第一篇采访帖子中,注意yoast seo的齿轮标签?你可以把/ rick-owens /作为Canonical URL。