私はfunction.phpにカスタム分類法を追加しました。ここでのコード:
function create_autor_nonhierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Autor', 'taxonomy general name' ),
'singular_name' => _x( 'Autor', 'taxonomy singular name' ),
'search_items' => __( 'Buscar autores' ),
'popular_items' => __( 'Autores populares' ),
'all_items' => __( 'Todos los autores' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Editar autor' ),
'update_item' => __( 'Actualizar autor' ),
'add_new_item' => __( 'Añadir nuevo autor' ),
'new_item_name' => __( 'Nombre del nuevo autor' ),
'separate_items_with_commas' => __( 'Separa los autores con comas' ),
'add_or_remove_items' => __( 'Añadir o eliminar autores' ),
'choose_from_most_used' => __( 'Elije ente los autores más utilizados' ),
'menu_name' => __( 'Autor' ),
);
register_taxonomy( 'autor', 'product', array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array( 'slug' => 'autor' ),
));
}
add_action( 'init', 'create_autor_nonhierarchical_taxonomy', 0 );
function show_product_autor(){
$authors = wp_get_post_terms( get_the_ID(), 'autor' );
$author = array_pop($authors);
$authorTeamPg = get_page_by_title( $author->name, 'OBJECT', 'team' );
$authorTeamPgLink = get_permalink( $authorTeamPg->ID);
echo "<b>AUTOR: </b><a href='{$authorTeamPgLink}'>{$author->name}</a>",'<br />';
}
add_action( 'woocommerce_single_product_summary', 'show_product_autor', 24 );
今、私は2人以上の著者を持っている本です。たとえば2人または3人の著者を表示するためにコードを変更するにはどうすればよいですか。さらに、適切に著者ではなく、編集者がいる本もあります(多くの著者がいて、そのうちの1人だけが出版を担当している本)。通常、この場合、エディタの名前の後にこのような括弧が付きます(編)。どのように著者フィールドにこのオプションを追加することができますか?
複数の著者を表示するには、一連の著者をループ処理します。
function show_product_autor(){
$authors = wp_get_post_terms( get_the_ID(), 'autor' );
foreach($authors as $author) {
$authorTeamPg = get_page_by_title( $author->name, 'OBJECT', 'team' );
$authorTeamPgLink = get_permalink( $authorTeamPg->ID);
echo "<b>AUTOR: </b><a href='{$authorTeamPgLink}'>{$author->name}</a>",'<br />';
}
}
編集者を扱うための最も簡単な解決策IMOは、分類法を階層的にし、編集者でもあるすべての著者の下にeditor
という用語を追加することです。編集者を選択するときは、著者名とその下の「編集者」という用語の両方を選択してください。
したがって、上記のコードは次のようになります。
function show_product_autor(){
$authors = wp_get_post_terms( get_the_ID(), 'autor');
$output = array();
foreach($authors as $author) {
if(!$author->parent) { //if there is no parent term
$authorTeamPg = get_page_by_title( $author->name, 'OBJECT', 'team' );
$authorTeamPgLink = get_permalink( $authorTeamPg->ID);
$output[$author->term_id]['url'] = "<a href='{$authorTeamPgLink}'>{$author->name}</a>";
} else {
$output[$author->parent]['ed'] = ' (ed.)';
}
}
$outputfinal = array();
foreach($output as $line) {
if(!empty($line['url'])) { //just to be safe, check the url is there
$outputfinal[] = (empty($line['ed'])) ? $line['url'] : $line['url'].$line['ed'];
}
}
echo '<b>AUTOR: </b>'.implode(', ', $outputfinal).'<br />';
}