Heim  >  Fragen und Antworten  >  Hauptteil

Präsentieren Sie die meistgesehenen benutzerdefinierten Taxonomien aus dem WordPress-Beitragszyklus und entfernen Sie doppelte Werte

Ich erstelle eine Schleife, die die am häufigsten besuchten Taxonomien auf der Website anzeigt. Ich weiß, dass WordPress keine Taxonomien und Kategorieansichten verfolgt. Deshalb habe ich einen Tracker in die Beiträge eingefügt, um eine Schleife mit den am häufigsten angesehenen Beiträgen zu erstellen und dann die Taxonomie dieses Beitrags auf der Startseite anzuzeigen.

Gutschrift des Codes an 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);

Erstellen Sie nach dem Einfügen des Trackers eine Schleife, um die am häufigsten angesehenen Beiträge anzuzeigen

Der Code lautet wie folgt:

<?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();

Das Problem liegt darin, dass ich möchte, dass es angezeigt wird name、id、链接、图像等。浏览次数最多的帖子的父分类法中,它们开始重复自己,我想排除重复项,这样每次有人访问与同一分类法不同的帖子时就不会重复我尝试了 array_unique(), mir aber immer wieder der doppelte Wert zurückgegeben wird.

Gibt es eine Möglichkeit, doppelte Werte innerhalb einer Schleife zu entfernen?

P粉547362845P粉547362845259 Tage vor384

Antworte allen(1)Ich werde antworten

  • P粉545910687

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

    我设法解决了我的问题,如果我的问题令人困惑或没有让某些用户满意,我深表歉意

    代码如下:

     '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();

    Antwort
    0
  • StornierenAntwort