Maison  >  Questions et réponses  >  le corps du texte

Présentez les taxonomies personnalisées les plus consultées du cycle de publication WordPress et supprimez les valeurs en double

Je crée une boucle qui affiche les taxonomies les plus visitées sur le site. Je sais que WordPress ne suit pas les taxonomies et les vues de catégories. J'ai donc inséré un tracker dans les publications pour créer une boucle avec les publications les plus consultées, puis afficher la taxonomie de cette publication sur la page d'accueil.

Crédit de code à isitwp

function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
 
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Après avoir inséré le tracker, créez une boucle pour afficher les publications les plus consultées

Le code est le suivant :

<?php
$popular = array(
    'post_type'         => 'videos',
    'posts_per_page'    => 8,
    'meta_key'          => 'post_views_count', // setPostViews($postID) function;
    'orderby'           => 'meta_value_num',
    'order'             => 'ASC',
    'offset'            => 1,
);

$popular_loop = new WP_Query( $popular );

if( $popular_loop->have_posts() ){

    while( $popular_loop->have_posts() ) : $popular_loop->the_post();

        $terms = get_the_terms( $post->ID, 'seasons' ); 

        foreach($terms as $term) {

            $ids = $term->term_id;

            $arr = explode( ',', $ids );

            $arr_unique = array_unique( $arr );

            $str = implode( $arr_unique );

            if($term->parent != 0){
                /**
                 * Taxonomie has children get the parent ID
                */
                echo '<p>Return parent unique:' . $str . '</p>';
            
            } else {
                /**
                 * Taxonomie has NO children get the current taxonomy ID 
                */
                echo '<p>Return unique:' . $str . '</p>';
            }

        }

    endwhile;

} else {
    return false;
} wp_reset_postdata();

Le problème est que je veux qu'il s'affiche name、id、链接、图像等。浏览次数最多的帖子的父分类法中,它们开始重复自己,我想排除重复项,这样每次有人访问与同一分类法不同的帖子时就不会重复我尝试了 array_unique() mais il continue de me renvoyer la valeur en double.

Existe-t-il un moyen de supprimer les valeurs en double dans une boucle ?

P粉547362845P粉547362845210 Il y a quelques jours337

répondre à tous(1)je répondrai

  • P粉545910687

    P粉5459106872024-02-27 12:17:30

    J'ai réussi à résoudre mon problème, je m'excuse si ma question a prêté à confusion ou n'a pas satisfait certains utilisateurs

    Le code est le suivant :

     'videos',
        'posts_per_page'    => 8,
        'order'             => 'ASC',
    );
    
    $popular_loop = new WP_Query( $popular );
    
    if( $popular_loop->have_posts() ){
    
        // Get the terms array
        $unique = [];
    
        while( $popular_loop->have_posts() ) : $popular_loop->the_post();
    
            // Taxonomy loop post
            $terms = get_the_terms( $post->ID, 'seasons' ); 
    
            foreach($terms as $term) {
    
                // Get the unique array from loop
                if( !in_array( $term->term_id, $unique ) ){
                    $unique[] = $term->term_id;
    
                    // Get unique ID from Taxonomy
                    echo $term->term_id;
    
                    // Get Unique name fromt Taxonomy
                    echo $term->name;
                    
                }
    
            }
    
        endwhile;
    
    } else {
    
        echo 'Nothing';
    
    } wp_reset_postdata();

    répondre
    0
  • Annulerrépondre