Présentez les taxonomies personnalisées les plus consultées du cycle de publication WordPress et supprimez les valeurs en double
P粉547362845
P粉547362845 2024-02-26 15:00:25
0
1
394

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粉547362845
P粉547362845

répondre à tous(1)
P粉545910687

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();
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal