Mostrar posts por ubicación en Custom Post Type

  • Autor Autor chocovo
  • Fecha de inicio Fecha de inicio
C

chocovo

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Hola,

Me he quedado atascado con un tema...

He creado un post type a traves de functions.php y estoy intentando que se muestren los posts según la taxonomy que haya en la URL.

Consigo que las url sean de tipo:
  1. /tiendas (página archive del custom type > funciona)
  2. tiendas/espana/ (Error 404)
  3. tiendas/espana/cataluna/ (Error 404)
  4. tiendas/espana/cataluna/barcelona (Error 404)
  5. tiendas/espana/cataluna/barcelona/mi_tienda (Single page de Custom type > funciona)
Para la url de "mi tienda" tengo lo siguiente
add_filter( 'post_type_link', 'mi_post_type_link', 10, 2 ); function mi_post_type_link( $post_link ) { $taxonomy = 'lugar'; $terms = get_the_terms( get_the_ID(), $taxonomy ); $slug = []; if( $terms ){ array_multisort( array_column($terms, 'parent'), array_column($terms, 'term_id'), $terms ); foreach ( $terms as $term ) { if ( $term->parent == 0 ) { array_unshift( $slug, sanitize_title_with_dashes( $term->slug ) ); } else { array_push( $slug, sanitize_title_with_dashes( $term->slug ) ); } } } if ( ! empty( $slug ) ) { return str_replace( '%' . $taxonomy . '%' , join( '/', $slug ) , $post_link ); } return $post_link; }

Para la creación del Custom type tengo lo siguiente:
function register_espais_post_type() { $args = [ 'label' => 'tienda', 'labels' => [], 'supports' => array('title', 'editor', 'thumbnail', 'excerpt'), 'public' => true, 'publicly_queryable' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-format-gallery', 'capability_type' => 'post', 'taxonomies' => [ 'lugar', ], 'has_archive' => true, 'delete_with_user' => false, 'can_export' => true, 'rewrite' => [ 'slug' => 'tiendas/%lugar%', 'with_front' => false, ], ]; register_post_type( 'espais', $args ); } add_action( 'init', 'register_espais_post_type' );

¿Alguna idea para que muestre las tiendas según el lugar y no se quede en error 404?

Gracias
 
Hola,

Me he quedado atascado con un tema...

He creado un post type a traves de functions.php y estoy intentando que se muestren los posts según la taxonomy que haya en la URL.

Consigo que las url sean de tipo:
  1. /tiendas (página archive del custom type > funciona)
  2. tiendas/espana/ (Error 404)
  3. tiendas/espana/cataluna/ (Error 404)
  4. tiendas/espana/cataluna/barcelona (Error 404)
  5. tiendas/espana/cataluna/barcelona/mi_tienda (Single page de Custom type > funciona)
Para la url de "mi tienda" tengo lo siguiente

add_filter( 'post_type_link', 'mi_post_type_link', 10, 2 );
function mi_post_type_link( $post_link ) {
$taxonomy = 'lugar';
$terms = get_the_terms( get_the_ID(), $taxonomy );
$slug = [];

if( $terms ){
array_multisort(
array_column($terms, 'parent'),
array_column($terms, 'term_id'),
$terms
);

foreach ( $terms as $term ) {
if ( $term->parent == 0 ) {
array_unshift( $slug, sanitize_title_with_dashes( $term->slug ) );
} else {
array_push( $slug, sanitize_title_with_dashes( $term->slug ) );
}
}
}
if ( ! empty( $slug ) ) {
return str_replace( '%' . $taxonomy . '%' , join( '/', $slug ) , $post_link );
}
return $post_link;
}


Para la creación del Custom type tengo lo siguiente:

function register_espais_post_type() {
$args = [
'label' => 'tienda',
'labels' => [],
'supports' => array('title', 'editor', 'thumbnail', 'excerpt'),
'public' => true,
'publicly_queryable' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-format-gallery',
'capability_type' => 'post',
'taxonomies' => [ 'lugar', ],
'has_archive' => true,
'delete_with_user' => false,
'can_export' => true,
'rewrite' => [
'slug' => 'tiendas/%lugar%',
'with_front' => false,
],
];
register_post_type( 'espais', $args );
}
add_action( 'init', 'register_espais_post_type' );


¿Alguna idea para que muestre las tiendas según el lugar y no se quede en error 404?

Gracias
Hola,

Para solucionar el problema de los errores 404 al intentar mostrar los posts según la taxonomía de la URL, te recomiendo que realices los siguientes ajustes en tu código:

1. Asegúrate de que la taxonomía "lugar" esté registrada de la forma correcta y relacionada con tu custom post type "espais".

2. Modifica la estructura de permalinks para tu custom post type y la taxonomía "lugar" de la siguiente manera:

PHP:
'rewrite' => [
    'slug' => 'tiendas',
    'with_front' => false,
],

3. Verifica que tienes las reglas de reescritura actualizadas para que WordPress pueda reconocer las nuevas URLs. Puedes regenerar las reglas de reescritura utilizando el siguiente código:

PHP:
function custom_flush_rewrite_rules() {
    flush_rewrite_rules();
}
add_action('after_switch_theme', 'custom_flush_rewrite_rules');

Con estos ajustes, deberías poder mostrar los posts de tu custom post type según la taxonomía de la URL sin errores 404. ¡Espero que esta información te sea de ayuda! Si tienes alguna otra pregunta o duda, no dudes en preguntar.
 
Atrás
Arriba