web-dev-qa-db-fra.com

Taxonomie liée aux pages

Dans mes pages de produits, j'ai ajouté de nombreuses taxonomies personnalisées. L'une d'entre elles est la taxonomie appelée "colecciones". Comme vous pouvez le voir par exemple dans cette URL: https://www.editorialufv.es/catalogo/comunicacion-clinica/ chaque livre fait partie d'un collection (colección en espagnol).

J'aimerais que le lien qui apparaît dans la page du produit soit redirigé vers la page de chaque collection que j'ai créée et non vers le filtre de la page de magasin. Dans ce cas la colección s'appelle "relación clínica" et son URL est la suivante: https://www.editorialufv.es/coleccionesufv/relacion-clinica/

Grâce à l’un de vous, j’ai fait quelque chose de similaire pour le nom des auteurs: ils sont désormais liés à la page du membre et non à la page du filtre de la boutique. Pour ce faire, j'ai modifié le fichier function.php de cette façon:

add_action( 'woocommerce_single_product_summary', 'show_product_autor', 24 );
function show_product_autor(){

// get this woo-comm's product author
$authors = wp_get_post_terms( get_the_ID(), 'autor' );

// we know it'll just be one author, so use first object of array
$author = array_pop($authors);

// knowing the authors name, lets find the TEAM page
$authorTeamPg = get_page_by_title( $author->name, 'OBJECT', 'team' );

// now we know the authors page
$authorTeamPgLink = get_permalink( $authorTeamPg->ID);

// output
echo "<b>AUTOR: </b><a href='{$authorTeamPgLink}'>{$author->name}</a>",'<br />';
}

Maintenant, j'ai essayé de faire la même chose pour la taxonomie de la collection, sans résultat. Voici ma tentative:

add_action( 'woocommerce_single_product_summary', 'show_product_colecciones', 25 );

function show_product_colecciones(){

$collections = wp_get_post_terms( get_the_ID(), ‘Colecciones’ );

$collection = array_pop($collections);

$collectionPg = get_page_by_title ( $collection->name, ‘OBJECT’, ‘page’ );

$collectionPgLink = get_permalink( $collectionPg->ID);

echo “<b>COLECCIÓN: </b><a href=‘{$collectionPgLink}’>{$collection->name}</a>”, ‘<br />’;
}

Le code de la taxonomie est le suivant:

$labels = array(
'name' => _x( 'Colecciones', 'taxonomy general name' ),
'singular_name' => _x( 'Colección', 'taxonomy singular name' ),
'search_items' =>  __( 'Buscar colecciones' ),
'all_items' => __( 'Todas las colecciones' ),
'parent_item' => __( 'Colección padre' ),
'parent_item_colon' => __( 'Colección padre:' ),
'edit_item' => __( 'Editar colección' ), 
'update_item' => __( 'Actualizar colección' ),
'add_new_item' => __( 'Añadir nueva colección' ),
'new_item_name' => __( 'Nombre de la nueva colección' ),
'menu_name' => __( 'Colecciones' ),
);     

register_taxonomy('colecciones',array('product'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'colecciones' ),
));
}

Y a-t-il quelqu'un qui pourrait m'aider?

1
Stefano

Vos guillemets simples et doubles ne sont pas du type correct dans ce bloc de code. En outre, le nom de taxonomie est 'colecciones' avec un petit 'c', mais vous avez utilisé 'Coleccions' avec un 'C' majuscule. Le match est sensible à la casse. Ainsi, votre code de fonction devrait être:

function show_product_colecciones(){

  $collections = wp_get_post_terms( get_the_ID(), 'colecciones' );

  $collection = array_pop($collections);

  $collectionPg = get_page_by_title ( $collection->name, 'OBJECT', 'page' );

  $collectionPgLink = get_permalink( $collectionPg->ID);

  echo "<b>COLECCIÓN: </b><a href='{$collectionPgLink}'>{$collection->name}</a>", '<br />';

}
1
inarilo