Mostrar posts por localização em Custom Post Type

  • Autor Autor chocovo
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
C

chocovo

Gamma
Verificación en dos pasos activada
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
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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.
 
Voltar
Topo