Huy Hòa
  • Home
  • Lập trình
    • WordPress
    • Joomla
    • Marketing
    • Seo Web
    • Thiết kế Web
  • Mẹo Vặt
  • Sức khỏe
  • Làm đẹp
  • Du Lịch
  • Free Tools
    • Chuyển Số Thành Chữ
    • Sửa Lỗi Font Chữ Tiếng Việt Online
    • Phần Mềm Gõ Tiếng Việt Online
  • Liên hệ
Nổi bật
  • Nước vo gạo và những công dụng tuyệt vời mà bạn chưa biết
  • 21 Serum HA tốt nhất hiện nay cho da khô, da dầu nhờn và trị mụn
  • 15 cách làm trắng răng tại nhà cực kỳ hiệu quả và dễ áp dụng
  • 50+ website tải Sound Effects chất lượng cao miễn phí và có phí
  • Đánh giá 10 phần mềm SEO AI tốt nhất hiện nay
Thứ Bảy, Tháng Tư 1
Huy Hòa
  • Home
  • Lập trình
    • WordPress
    • Joomla
    • Marketing
    • Seo Web
    • Thiết kế Web
  • Mẹo Vặt
  • Sức khỏe
  • Làm đẹp
  • Du Lịch
  • Free Tools
    • Chuyển Số Thành Chữ
    • Sửa Lỗi Font Chữ Tiếng Việt Online
    • Phần Mềm Gõ Tiếng Việt Online
  • Liên hệ
Huy Hòa
Home»Thiết kế web»Hướng dẫn sử dụng hàm get_terms trong WordPress

Hướng dẫn sử dụng hàm get_terms trong WordPress

Facebook Twitter Pinterest LinkedIn Tumblr Email
Hướng dẫn sử dụng hàm get_terms trong Wordpress
Hướng dẫn sử dụng hàm get_terms trong Wordpress

Trước tiên, get_terms nó là một hàm (function), còn WP_Term_Query nó là một lớp (class), nên tùy mục đích sử dụng mà chúng ta có thể sử dụng function hay là class. Bài viết này Huy Hòa chỉ hướng dẫn các bạn sử dụng hàm get_terms(). Nếu có thời gian rảnh, mình sẽ viết hướng dẫn sử dụng lớp WP_Term_Query (class) sau. Tuy nhiên, với lớp WP_Term_Query thì phạm vi áp dụng nó mở rộng hơn và nó hoàn toàn có thể thay thế get_terms được.

Table of Contents

  • 1 Hàm get_terms() nằm ở đâu?
  • 2 Cách sử dụng hàm get_terms()
  • 3 Giá trị trả về
  • 4 get_terms() exclude
    • 4.1 get_terms exclude by slug
  • 5 get_terms parent – depth
    • 5.1 get_terms depth – get only top-level terms in a custom taxonomy
    • 5.2 List the child terms of a taxonomy and not their parents

Hàm get_terms() nằm ở đâu?

Hàm này nằm ở trong core nguồn của WordPress.  Các bạn có thể tìm thấy hàm này tại file này: wp-includes/taxonomy.php. Đây là hàm nguyên bản của WordPress:

function get_terms( $args = array(), $deprecated = '' ) {
    $term_query = new WP_Term_Query();
 
    $defaults = array(
        'suppress_filter' => false,
    );
 
    /*
     * Legacy argument format ($taxonomy, $args) takes precedence.
     *
     * We detect legacy argument format by checking if
     * (a) a second non-empty parameter is passed, or
     * (b) the first parameter shares no keys with the default array (ie, it's a list of taxonomies)
     */
    $_args          = wp_parse_args( $args );
    $key_intersect  = array_intersect_key( $term_query->query_var_defaults, (array) $_args );
    $do_legacy_args = $deprecated || empty( $key_intersect );
 
    if ( $do_legacy_args ) {
        $taxonomies       = (array) $args;
        $args             = wp_parse_args( $deprecated, $defaults );
        $args['taxonomy'] = $taxonomies;
    } else {
        $args = wp_parse_args( $args, $defaults );
        if ( isset( $args['taxonomy'] ) && null !== $args['taxonomy'] ) {
            $args['taxonomy'] = (array) $args['taxonomy'];
        }
    }
 
    if ( ! empty( $args['taxonomy'] ) ) {
        foreach ( $args['taxonomy'] as $taxonomy ) {
            if ( ! taxonomy_exists( $taxonomy ) ) {
                return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
            }
        }
    }
 
    // Don't pass suppress_filter to WP_Term_Query.
    $suppress_filter = $args['suppress_filter'];
    unset( $args['suppress_filter'] );
 
    $terms = $term_query->query( $args );
 
    // Count queries are not filtered, for legacy reasons.
    if ( ! is_array( $terms ) ) {
        return $terms;
    }
 
    if ( $suppress_filter ) {
        return $terms;
    }
 
    /**
     * Filters the found terms.
     *
     * @since 2.3.0
     * @since 4.6.0 Added the `$term_query` parameter.
     *
     * @param array         $terms      Array of found terms.
     * @param array         $taxonomies An array of taxonomies.
     * @param array         $args       An array of get_terms() arguments.
     * @param WP_Term_Query $term_query The WP_Term_Query object.
     */
    return apply_filters( 'get_terms', $terms, $term_query->query_vars['taxonomy'], $term_query->query_vars, $term_query );
}

Đây cũng là hàm nằm trong core của WordPress nên ta chỉ việc sử dụng nó, còn phát triển và bảo mật là việc của …Wordpress lo.

Tham khảo cách dùng hàm get_posts() nhé.

Cách sử dụng hàm get_terms()

Kể từ phiên bản WordPress 4.5 cách sử dụng của hàm get_terms() có thay đổi chút.

$taxonomies = get_terms( array(
    'taxonomy' => 'taxonomy_name',
    'hide_empty' => false
) );

Trong đó:

taxonomy: Giá trị truyền vào nhằm xác định tham số cần lấy thông tin.

hide_empty:  Mặc định thì nó không lấy các “terms” mà không được gán với bài viết cụ thể nào. Nếu bạn vẫn muốn nó trả về những terms không gắn với bài viết nào thì bạn có thể chuyển cái false kia thành true là được

Hướng dẫn sử dụng hàm get_terms trong WordPress
Hướng dẫn sử dụng hàm get_terms trong WordPress

Các tham số có thể truyền vào của hàm get_terms là:

    'taxonomy' => '', 
    'orderby' => 'name', 
    'order' => 'ASC', 
    'hide_empty' => 1, 
    'include' => array(), 
    'exclude' => array(), 
    'exclude_tree' => array(), 
    'number' => '', 
    'offset' => 0, 
    'fields' => 'all', 
    'name' => '', 
    'slug' => '', 
    'hierarchical' => true, 
    'search' => '', 
    'name__like' => '', 
    'description__like' => '', 
    'pad_counts' => false, 
    'get' => '', 
    'child_of' => 0, 
    'parent' => '', 
    'childless' => false, 
    'cache_domain' => 'core', 
    'update_term_meta_cache' => true, 
    'meta_query' => null, 
    'meta_key' => ''

Khi sử dụng hàm này cho các custom field thì có thể sử dụng  như ví dụ này:

$terms = get_terms( 'my_term', $args );

Trong đó my_term là tên của taxonomy. Ví dụ như: Thể loại tour / Hạng tàu

terms ở đây là các giá trị ví dụ như tags, category trong bài viết, hoặc bất kỳ cái gì bạn định nghĩa nó là taxonomy khi bạn thêm post_type. 

Giá trị trả về

Hàm get_terms() trả về một đối tượng WP_Post (WP_Post object).  Các thông số trả về như danh sách bên dưới đây:

  • [“term_id”]=> //int
  • [“name”]=> //string
  • [“slug”]=> //string
  • [“term_group”]=> //int
  • [“term_taxonomy_id”]=> //int
  • [“taxonomy”]=> //string
  • [“description”]=> //string
  • [“parent”]=> //int
  • [“count”]=> // int
  • [“filter”]=> //string
  • [“meta”]=> array(0)

Từ danh sách trả về đó, chúng ta hoàn toàn có thẻ lấy riêng từng giá trị hoặc lấy tất cả. Dưới đây là một ví dụ việc hiện tất cả các category theo kiểu dropdown list:

<?php
function hhlist_taxonomy($type, $post_type) {
  $terms = get_terms($type);
  $category = taxonomy_current($type); 
  if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    the_terms_list(
      'categories__dropdown icon-dropdown',
      array(
        'show_option_all'  => 'Click to filter',
        'taxonomy'         => $type,
        'current_category' => $category->term_id,
        'value_field'      => 'slug',
        'selected'         => $category->slug,
      ),
      'dropdown',
      'data-module-init="redirect-dropdown"'
    );
  }
}
?>

get_terms() exclude

Tương tự như vậy, mình có thể giới hạn terms cần lấy bằng cách dùng exclude trong tham số $args truyền vào. Ví dụ dưới đây là mình list tất cả các category của HuyHoa.Net nhưng loại trừ (exclude) 2 category có ID là 30 và 1.

<?php
$hh_taxonomies = get_terms( array(
    'taxonomy' => 'category',
    'exclude' => array(30,1),
    'hide_empty' => false
) ); 
if ( !empty($hh_taxonomies) ) :
    $output = '<select>';
    $output .= '<option>Chọn danh mục</option>';
    foreach( $hh_taxonomies as $cat_hh ) {
        if( $cat_hh->parent == 0 ) {
            $output.= '<optgroup label="'. esc_attr( $cat_hh->name ) .'">';
            foreach( $hh_taxonomies as $subcategory ) {
                if($subcategory->parent == $cat_hh->term_id) {
                $output.= '<option value="'. esc_attr( $subcategory->term_id ) .'">
                    '. esc_html( $subcategory->name ) .'</option>';
                }
            }
            $output.='</optgroup>';
        }
    }
    $output.='</select>';
    echo $output;
endif;
//var_dump($hh_taxonomies);
?>

get_terms exclude by slug

Nếu bạn muốn exclude một số giá trị slug khi dùng get terms thì nó phức tạp hơn chút. Trước tiên bạn phải dùng chính get terms để lấy các giá trị id của slug cần loại, sau đó mới dùng get terms để lấy giá trị cần lấy. Đọc đoạn code dưới đây để hiểu rõ ý định của mình trong đoạn code nhé:

<?php
// default to not exclude terms
$ids_to_exclude = array();
$get_terms_to_exclude =  get_terms(
    array(
        'fields'  => 'ids',
        'slug'    => array( 
            'du-lich', 
            'travel', 
            'web',
            'seo' ),
        'taxonomy' => 'post_tag',
    )
);
if( !is_wp_error( $get_terms_to_exclude ) && count($get_terms_to_exclude) > 0){
    $ids_to_exclude = $get_terms_to_exclude; 
}
$roles = get_terms(
    array(
        'orderby'    => 'ID',
        'order'      => 'ASC',
        'hide_empty' => true,
        'exclude'    => $ids_to_exclude,
        'taxonomy'   => 'post_tag',
    )
);
if ( count($roles) > 0 ) : ?>
     // làm gì ở đây thì làm :D
<?php endif;?>

get_terms parent – depth

Nếu bạn truyền tham số ‘parent’ => 0 thì nó sẽ chỉ lấy các terms cha mẹ. Còn các terms con nó không lấy. Ví dụ :

$myterms = get_terms( array( 'taxonomy' => 'category', 'parent' => 0 ) );

get_terms depth – get only top-level terms in a custom taxonomy

Chọn parent thành 0 là nó chỉ lấy toàn bộ terms cha mẹ mà không hiện terms con như ví dụ bên trên ấy

$terms = get_terms( array( 
    'taxonomy' => 'tax_name',
    'parent'   => 0
) );

List the child terms of a taxonomy and not their parents

Dựa vào cái parent này thì mình hoàn toàn có thể chỉ hiện nguyên các terms con, không hiện terms cha mẹ. Đây là ví dụ cụ thể:

<?php
$taxonomyName = "category";
//This gets parent terms only.  This is done by setting parent to 0.  
$parent_terms = get_terms( $taxonomyName, array( 'parent' => 0, 'orderby' => 'slug', 'hide_empty' => false ) );   
echo '<ul>';
foreach ( $parent_terms as $pterm ) {
    //Get the Child terms
    $terms = get_terms( $taxonomyName, array( 'parent' => $pterm->term_id, 'orderby' => 'slug', 'hide_empty' => false ) );
    foreach ( $terms as $term ) {
        echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';   
    }
}
echo '</ul>';
?>

 

Các bạn lưu ý là hàm này khác hoàn toàn với hàm get_the_term() nhé.

Hàm này các bạn có thể sử dụng thoải mái ở Plugin hoặc ở template và không cần phải defines bất kỳ thông số nào. Nó có thể hoạt động độc lập trong môi trường nội bộ của WordPress như ở Plugins hay ở trong Theme.

3.7/5 - (3 bình chọn)
Wordpress
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleMụn trứng cá: 5 vị trí hay xuất hiện và cách điều trị
Next Article Làn da nhạy cảm thì có được tẩy da chết hay không?
Gia Han
  • Website

Chào bạn, mình là Gia Hân. Mình học về dược sỹ nhưng hiện tại chỉ làm nội trợ và mỹ phẩm handmade. Mình cũng có chút ít kiến thức về tin học như wordpress, joomla, hay SEO nhưng cũng chỉ ở mức đủ dùng, chưa thể làm thầy được. Các bài mình viết dựa chính trên kinh nghiệm của bản thân và thực tế sử dụng. Sẽ không tránh khỏi sai sót, nếu các bạn phát hiện thấy sai sót nào thì nhắn giúp để mình sửa nhé. Mục liên hệ ở đây.

Related Posts

Đánh giá 10 phần mềm SEO AI tốt nhất hiện nay

Hướng dẫn 2 cách xóa phông nền ảnh Online không cần Photoshop

Cách làm mịn da mặt bằng Photoshop mà vẫn giữ được lỗ chân lông

20 công cụ tách nền ảnh tốt nhất và hoàn toàn miễn phí

Cách hiển thị Category trong WordPress sử dụng get category với get_categories()

Hướng dẫn cài đặt, sử dụng, cấu hình Contact Form 7 đầy đủ nhất

Hướng dẫn sử dụng Cloudflare DNS, Cloudflare CDN và bảo mật từ A-Z

get_the_post_thumbnail_url – Get the post thumbnail URL with example

Hướng dẫn sử dụng wp_insert_user có ví dụ cụ thể

Leave A Reply Cancel Reply

Search
SEO - Marketing

get_the_post_thumbnail_url – Get the post thumbnail URL with example

get_the_post_thumbnail_url là hàm dùng để lấy đường dẫn file ảnh đại diện (post thumbnail) của bài viết. Trong Wordpress, hình đại diện của bài viết…

Hàm get_posts() WordPress: Cách sử dụng và ví dụ cụ thể

Cách dùng hàm get_post() trong WordPress để lấy dữ liệu bài viết

Hướng dẫn sử dụng hàm get_terms trong WordPress

Hướng dẫn sử dụng các hàm esc_html_e(), esc_html__(), esc_html() trong WordPress

Hàm get_post_meta() WordPress: Cách sử dụng và ví dụ cụ thể

Hướng dẫn sử dụng hàm get_the_date trong WordPress

Thiết kế Web - Đồ Họa

Download bộ Font chữ viết tay đẹp nhất hiện nay

Font chữ viết tay là bộ font chữ gồm nhiều fonts dành cho các bạn thiết kế đồ họa. Bộ font chữ viết tay bao…

11 Plugin Thống Kê Truy Cập WordPress tốt nhất

Cách làm mịn da mặt bằng Photoshop mà vẫn giữ được lỗ chân lông

Hàm get_template_part(): Cách sử dụng và ví dụ cụ thể

Hướng dẫn sử dụng hàm get_terms trong WordPress

Hướng dẫn sử dụng Cloudflare DNS, Cloudflare CDN và bảo mật từ A-Z

Hướng dẫn 2 cách xóa phông nền ảnh Online không cần Photoshop

Wordpress - Woocommerce

Hướng dẫn sử dụng wp_insert_user có ví dụ cụ thể

wp_insert_user là hàm dùng để cập nhật thông tin thành viên (update user) hoặc để thêm (insert) thành viên mới vào cơ sở dữ liệu.…

get_user_by: Hướng dẫn sử dụng và ví dụ cụ thể

Hướng dẫn sử dụng các hàm esc_html_e(), esc_html__(), esc_html() trong WordPress

Đánh giá 10 phần mềm SEO AI tốt nhất hiện nay

Hàm get_template_part(): Cách sử dụng và ví dụ cụ thể

Cách hiển thị Category trong WordPress sử dụng get category với get_categories()

20 công cụ tách nền ảnh tốt nhất và hoàn toàn miễn phí

Bài viết mới

Nước vo gạo và những công dụng tuyệt vời mà bạn chưa biết

21 Serum HA tốt nhất hiện nay cho da khô, da dầu nhờn và trị mụn

15 cách làm trắng răng tại nhà cực kỳ hiệu quả và dễ áp dụng

50+ website tải Sound Effects chất lượng cao miễn phí và có phí

Đánh giá 10 phần mềm SEO AI tốt nhất hiện nay

Hướng dẫn 2 cách xóa phông nền ảnh Online không cần Photoshop

Cách làm mịn da mặt bằng Photoshop mà vẫn giữ được lỗ chân lông

20 công cụ tách nền ảnh tốt nhất và hoàn toàn miễn phí

Sự khác nhau giữa Collagen và Axit Hyaluronic

Tác dụng cấp ẩm của Axit Hyaluronic cho làn da tươi trẻ, không nếp nhăn

© 2023 All Rights Reserved  by  HuyHoa.Net. DMCA.com Protection Status .
Hosted by Dreamhost. Follow us on  Google News.
  • Giới thiệu
  • Bảo mật
  • Quy định sử dụng
  • Liên hệ

Type above and press Enter to search. Press Esc to cancel.