Help? Trong wordpress có cách nào lấy thẻ tag trong 30 ngày gần nhất không vậy ?

Discussion in 'Thảo Luận Chung' started by longhcm, Nov 27, 2022.

  1. longhcm

    longhcm Sơ Nhập Giang Hồ

    ACE cho hỏi:
    Trong wordpress có cách nào lấy thẻ tag trong 30 ngày gần nhất không vậy ?

    Nếu dùng get_tags(); mà trong website quá nhiều tag thì làm chậm server ?.
     
  2. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Thử code này xem
    Code:
    $args = array(
        'number' => 20,
        'order' => DESC,
     'date_query' => array(
     array(
     'after' => '-30 days',
     'column' => 'post_date',
     ),
     ),       
    );
    $tags = get_tags( $args );
    
    foreach ( $tags as $tag ) {
        $tag_link = get_tag_link( $tag->term_id ); 
        $html = "<a href='{$tag_link}' title='{$tag->name}' class='{$tag->slug}'>";
        $html .= "{$tag->name}</a>";
        echo $html;
    }
    
     
    Tạ hơi nặng and longhcm like this.
  3. longhcm

    longhcm Sơ Nhập Giang Hồ

    Mình thấy 2 cái này không có tác dụng gì cả
    'after' => '-30 days',
    'column' => 'post_date',

    Nhưng đổi lại vd sẽ lấy 1000 tag mới nhất chẳng hạn
    Chỉ cần dùng 2 dòng này là đủ
    $args = array(
    'number' => 1000,
    'order' => "DESC",
    );
     
  4. wpresources

    wpresources Bang Chúng

    Cái anh xmen lấy là lấy tag theo bài viết (đoán vậy) còn vì sao không ra kết quả anh dán câu lệnh sau trong index.php để xem lỗi
    Code:
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    ?>
    Còn cái anh đây là lấy 1000 tag cuối cùng không có điều kiện gì hết
     
    xmenvn2510 likes this.
  5. longhcm

    longhcm Sơ Nhập Giang Hồ

    Tức thay đổi 'after' => '-30 days', thành 'after' => '-3 days',
    Thì tag không thay đổi gì dù bài viết mới nhất cách đây 10 ngày
     
  6. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Ý a là thế theo điều kiện của chủ thớt. Còn ko đúng thì thử code này bạn @longhcm nha.
    Code:
    global $wpdb;
    $term_ids = $wpdb->get_col("
    SELECT term_id FROM $wpdb->term_taxonomy
    INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id=$wpdb->term_relationships.term_taxonomy_id
    INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
    WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= $wpdb->posts.post_date");
    
    if(count($term_ids) > 0){
    
    $tags = get_tags(array(
    'orderby' => 'count',
    'order' => 'DESC',
    'number' => 28,
    'include' => $term_ids,
    ));
    foreach ( (array) $tags as $tag ) {
    echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
    }
    }
    
    Cái gì cũng phải thử. Chứ một phát đúng ngay thì quá ngon.
    --- Double Post Merged, Nov 28, 2022, Original Post Date: Nov 28, 2022 ---
    Em hỏi thì a trả lời. Còn kết quả sao e phải kiểm tra. A ko có thời gian test. Nhưng code thì biết tí ti thôi. Lần sau thì a xin phép ko trả lời e nha.
     
  7. longhcm

    longhcm Sơ Nhập Giang Hồ

    Không biết đoạn thoại nào làm xmenvn2510 phật lòng vậy.
    Mình test thấy thế nào mình báo lại thôi mà.
     
  8. Tạ hơi nặng

    Tạ hơi nặng Bang Chúng

    Mình là a xmen mình cũng phật lòng
     
    xmenvn2510 likes this.
  9. Nai

    Nai MiddleMan Staff Member

    Mình thử tìm trong API của wordpress thì thấy tag ko order theo date (https://developer.wordpress.org/rest-api/reference/tags/)
    Tiếp tục kiểm tra lần nữa trong database thì type cat và tag ko có field nào là date cả, nên khả năng cao là phải dùng plugin thêm hoặc tự code.
     
  10. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Thôi bỏ đi nhé.
    Đoạn code thứ 2 thử chưa bồ. Ok không?
     
  11. longhcm

    longhcm Sơ Nhập Giang Hồ

    Đoạn 2 OK rồi,
    Thank you so much