Publicaciones personalizadas con la misma babosa Redirigir a la publicación incorrecta con la misma babosa

Tengo 2 publicaciones de tipo de publicación personalizada. La publicación de video y la publicación de orientación de la ciudad La primera publicación (publicación de video) contiene la url: 104.130.239.132/rick-owens/ y la segunda publicación (publicación de orientación de la ciudad) url conatins: http: //104.130.239.132/city-guide/rick-owens/ (city-guide es el enlace permanente estructurado que es el nombre del tipo de publicación personalizada). Así que el problema llega aquí cada vez que tratamos de acceder a la primera url muestra la plantilla y el contenido de la segunda url.La segunda url es la última publicada.Traté de resolver por mí mismo desactivando el complemento Yooo Seo aún sin cambios y también hizo mi enlace permanente actualizado aún obtuvo los mismos resultados.

Adjuntar el fragmento Yoast SEO para la primera publicación de url: enter image description here y el fragmento Yoast SEO de la segunda publicación de url enter image description here Cualquier ayuda será apreciada, gracias.

Adición:

Aquí están mis códigos CPT.

1. Publicaciones de video:

$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. Publicaciones de la guía de ciudad:

 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 ); 

Tengo esto entonces en mi código

 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; } 

Este problema es muy común, ya que el nombre del dos tipo de publicación es similar, se mostrará el que sea el último. No se refleja en el tipo de publicación ahora. Supongo que eligió “post-name” o% postname% en una estructura de enlace permanente. Para resolver el problema, la primera y más fácil manera es cambiar la publicación de una de las publicaciones.

Otra es cambiar la estructura del enlace permanente del tipo de publicación desde functions.php mediante la reescritura de las funciones de clase de WordPress. Para hacerlo, debes mirar el enlace debajo del título de la publicación. Esto se debe a que se debe conocer el tipo de publicación del tipo de publicación personalizado en particular.

Implementé su código provisto en mi instalación local. Ahora tengo 2 tipos de publicaciones personalizadas como la tuya y la publicación en ambos nombres “rick owens”, que slug será “rick-owens”. En primer lugar, se muestra el mismo error que he mencionado.

Resolví este problema agregando esta función en 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'); 

Por encima de este código funcionó para mí y probado y debería funcionar para usted también.

Como ya mencioné, debes saber la url de publicación de la página de edición de esa publicación en particular.

Para el tipo de publicación personalizada de video, la URL de la publicación debería ser así:

http://www.siteurl.com/rewrite/rick-owens

Para el tipo de publicación de guía de ciudad, la url de publicación debería ser así:

http://www.siteurl.com/city-guide/rick-owens

Si estoy en lo correcto, la misma estructura de enlace también debe estar en su página, por lo que debería funcionar el código que proporcioné en la parte superior. Si tiene un enlace diferente al que he mencionado anteriormente, modifíquelo en el código functions.php que he proporcionado. Por ejemplo, si tiene para tipo de publicación personalizada de video,

http://www.siteurl.com/video/rick-owens

A continuación, cambie el código functions.php a

 $structure = 'video/%rewrite%'; 

ver img para comprobar la URL del video

Si tiene para tipo de publicación personalizada de guía de ciudad,

http://www.siteurl.com/city_guide/rick-owens

 $structure1 = 'city_guide/%rewrite%'; 

ver img para consultar la URL de la ciudad

Esta es la otra opción, que normalmente hago si ocurre un conflicto tan similar como el tuyo en mi proyecto. Si no lo obtuviste, por favor mencioname en esta publicación.

Espero que esto funcione

Respuesta actualizada a partir de su proceso actualizado

Utilice este código para actualizar su tipo de publicación a la funcionalidad de 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' ); 

Espero que este código funcione para usted y elimine el código como mencioné anteriormente y no olvide actualizar el enlace permanente.

Gracias

NOTA: no se olvide de actualizar su enlace permanente una vez que haya colocado el código en functions.php

Actualice el código de tipo de publicación de registro con el código siguiente y, si es posible, use el mismo código para el tipo de publicación de guía de ciudad

 $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 ); 

en tu configuración de enlaces permanentes de WordPress, coloca una estructura personalizada como /% category% /% postname% /, luego en tu primera entrevista, ¿notaste la pestaña de engranaje de yoo seo? puedes poner / rick-owens / como URL canónica.