Cum să afișezi termenii taxonomiei personalizate fără hyperlink-uri?

21 iul. 2011, 03:20:31
Vizualizări: 19.9K
Voturi: 5

Am căutat peste tot pentru a găsi un răspuns la întrebarea mea. Sper să pot primi ajutor aici. Iată despre ce este vorba...

În prezent, preiau termenii taxonomiei mele personalizate folosind:

<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>

Ceea ce încerc să fac este să preiau aceiași termeni ai taxonomiei personalizate specifici postării într-o listă, dar fără ca aceștia să fie afișați ca link-uri. Am încercat toate următoarele "soluții", dar niciuna nu funcționează. Orice ajutor ar fi apreciat.

Returnează termenii specifici postării într-un singur șir lung care nu poate fi pus într-o listă:

$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);

Returnează o listă cu toți termenii folosiți în toate tipurile de postări personalizate:

<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; } 
                ?>
</ul>

Nu returnează nimic:

<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>

Am încercat chiar și get_the_terms, get_terms, și get_categories fără succes.

1
Toate răspunsurile la întrebare 8
5
11

Poți încerca asta:

$terms = get_the_terms($post->id, 'skills');
if (!is_wp_error($terms)) : ?>

<?php 
    $skills_links = wp_list_pluck($terms, 'name'); 

    $skills_yo = implode(", ", $skills_links);
    ?>

    <span><?php echo $skills_yo; ?></span>
21 iul. 2011 08:11:35
Comentarii

Am actualizat exemplul de pe pagina get_the_terms. Nu sunt sigur ce ar trebui să facă acel unset pentru început...

t31os t31os
21 iul. 2011 12:59:43

Da, nici eu, dar a fost o copiere/inserare leneșă

Wyck Wyck
21 iul. 2011 17:54:58

Mulțumesc ambilor @t31os și Wyck pentru ajutor. Iată codul cu care am rămas, care s-a bazat pe aici și pe codex.

'<?php $terms = get_the_terms( $post->id, 'skills' );
if ( !is_wp_error($terms)) :
$skills_links = array();
foreach ($terms as $term) {
$skills_links[] = $term->name;
$skills = join( "</li><li>", $skills_links );
?>
<ul><li><?php echo $skills; ?></li></ul>
<?php endif ?>'

Certified K Certified K
22 iul. 2011 19:53:35

Îmi pare rău pentru postarea proastă. Nu reușesc să o formatez astfel încât să fie mai ușor de citit.

Certified K Certified K
22 iul. 2011 19:55:43

Ador acest răspuns - cod curat și util.

Sagive Sagive
8 ian. 2015 15:30:10
0

Doar folosește strip_tags

<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>
18 apr. 2016 21:28:48
1
// Obține termenii de taxonomie pentru postul curent
$terms = wp_get_post_terms($post->ID, 'NUME_TAXONOMIE');
$count = count($terms);
// Verifică dacă există termeni asociați
if ( $count > 0 ) {
    // Afișează fiecare termen
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
5 mar. 2012 01:12:50
Comentarii

Ultimul are și el o virgulă...

Sergi Sergi
26 mar. 2019 18:20:07
0
function term_clean($postid, $term)
{
    $terms = get_the_terms($postid, $term); 
    foreach ($terms as $term) {  echo $term->name;   };

}
18 aug. 2011 16:33:10
0

Dacă doriți doar termenii asignați unui anumit articol:

<?php $object_terms = wp_get_object_terms( $post_id, 'skills', array( 'fields' => 'names' ) );
if ( $object_terms ) { ?><ul><li><?php echo implode( '</li><li>', $object_terms ); ?></li></ul><?php } ?>

Dacă doriți TOȚI termenii:

<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>
14 mar. 2012 04:51:54
0

Am întâmpinat o problemă similară ieri și am găsit următoarea soluție:

function taxonomy_list( $taxonomy ) {
    $args = array('order'=>'ASC','hide_empty'=>false);
    $terms = get_terms( $taxonomy, $args );
    if ( $terms ) {
        printf( '<ul name="%s">', esc_attr( $taxonomy ) );
        foreach ( $terms as $term ) {
            printf( '<li>%s</li>', esc_html( $term->name ) );
        }
        print( '</ul>' );
    }
}

Apoi, pur și simplu inserează <?php taxonomy_list( 'ID-UL TAXONOMIEI' ); ?> în fișierul tău de template, înlocuind ID-UL TAXONOMIEI cu numele taxonomiei dorite.

Utilizarea mea inițială a fost pentru a crea o listă a categoriilor de joburi pe platforma mea. Fiecare element din listă era legat la arhiva taxonomiei respective. Poți vedea funcția completă în răspunsul meu la întrebarea mea pe Stackoverflow.

3 dec. 2013 19:33:06
0
// pentru afișarea termenilor de taxonomie fără link-uri: separați cu virgule
// copiază acest cod în fișierul function.php

function get_taxonony_toDisplay($post_id, $taxonomy_name) {
$terms = wp_get_post_terms($post_id, $taxonomy_name);
$count = count($terms);
if ( $count > 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
}

Deoarece trebuia să afișez 3 taxonomii separate prin virgule, am creat o funcție folosind codul lui Henry.

Pentru afișare folosește următoarea linie:

<?php get_taxonony_toDisplay($post->ID, 'numele_taxonomiei' ); ?> 
13 feb. 2014 10:14:48
0

Dacă doriți ca termenii să fie ordonați după slug în loc de nume, atunci folosiți acest cod...

<?php if(has_term('', 'CUSTOM-TAX')) {?> 
<?php
    $custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
    // Asigură-te că avem termeni și verifică și pentru obiectul WP_Error
    if (    $product_terms
    && !is_wp_error( $product_terms )
    ) {
    @usort( $product_terms, function ( $a, $b )
    {
    return strcasecmp( 
    $a->slug,
    $b->slug
    );
    });
    // Afișează termenii ca de obicei
    $term_list = [];
    foreach ( $custom_terms as $term ) 
    //$term_list[] = esc_html( $term->name );  // comentează această linie dacă vrei termenii ca linkuri și invers
    $term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // comentează această linie dacă NU vrei termenii ca linkuri și invers
    echo implode( ', ', $term_list );
    }
?>                          
<?php } else { ?><?php }?>
13 iun. 2016 11:35:40