Nhận danh mục wordpress hiện tại

Hướng dẫn cài đặt WordPress, Hướng dẫn lập trình WordPress, Học WordPress mien phi, Học WordPress trực tuyến, Học WordPress mien phi, SEO WordPress, Plugin WordPress, Giao diện WordPress, Công cụ WordPress, Phát triển WordPress, Câu hỏi thường gặp về WordPress

Trong WordPress, có nhiều cách khác nhau để hiển thị danh sách tất cả các danh mục ra trang chủ hoặc widget. Mặc định thì WordPress có Widget name Categories (đối với bài đăng) và Product Categories (đối với Woocommerce) để bạn chèn vào Widget. Tuy nhiên, nếu bạn muốn hiển thị danh sách các Danh mục ra trang chủ, hoặc vào trong trang, hoặc bất kỳ địa điểm nào khác, thì lúc đó bạn sẽ cần mã hóa thêm chức năng để nhận danh mục. Ở bài viết này mình sẽ hướng dẫn các bạn sử dụng hàm get_categories() để hiển thị danh mục bài viết hay danh mục sản phẩm ở bất kỳ đâu trong WordPress

Mục lục

Thể loại là gì?

Category dịch ra tiếng Việt có nghĩa là thể loại, danh mục. Nó dùng để chỉ một nhóm các đồ vật, sự vật, hiện vật có đặc tính hay tính năng tương tự nhau

Trong WordPress, Category là một thuật ngữ để chỉ một thể loại bài viết hay còn gọi là chuyên mục của bài viết. Trong tiếng Anh, Category là số ít, còn số nhiều là Categories dùng để chỉ danh mục bài viết, hay danh mục sản phẩm

Để cho dễ hiểu chúng ta cùng xem qua website huyhoa. bọc lưới. Ở đây Category là các danh mục như WordPress, Woocommerce, Sức khỏe, Làm đẹp… Các bài viết cụ thể có thể được gắn vào các Category này theo tùy chọn nội dung của bài viết đó viết về cái gì

Chuyên mục giúp cả người viết và người đọc phân biệt được chủ đề của một bài viết cụ thể và gom những bài viết thuộc cùng một chủ đề nào đó vào chung một trang

Ví dụ khi truy cập vào Category Lập Trình trên huyhoa. net thì bạn sẽ chỉ thấy các bài viết liên quan đến WordPress. Sẽ không có chuyện bài viết về sức khỏe hay du lịch mà lại cho vào Category WordPress

Nhận danh mục wordpress hiện tại

Cách sử dụng hàm get_categories() để lấy danh mục trong WordPress

Để lấy danh mục trong WordPress, ta có thể sử dụng hàm get_categories()

Để hiểu cách hoạt động cũng như cách sử dụng hàm này, trước tiên chúng ta sẽ xem qua về cú pháp của hàm get_categories()

Mã nguồn. Hàm này được tìm thấy trong tệp wp-includes/category.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

function get_categories( $args = '' ) {

    $defaults = mảng( 'taxonomy' => 'category' );

    $args     = wp_parse_args( $args, $defaults );

    /**

* Lọc phân loại được sử dụng để truy xuất các thuật ngữ khi gọi hàm get_categories()

*

* @kể từ 2. 7. 0

*

* @param string $taxonomy Phân loại để truy xuất các thuật ngữ từ

* @param array  $args     Một mảng đối số. Xem get_terms()

*/

    $args['phân loại'] = apply_filters( 'get_categories_taxonomy', $args['taxonomy'], $args );

    // Tương thích ngược.

    if ( isset( $args['type'] ) && 'link' === $args['type'] ) {

_deprecated_argument(

__CHỨC NĂNG__,

'3. 0. 0',

chạy nước rút (

/* người dịch. 1. "loại => liên kết", 2. "phân loại => link_category" */

__( '%1$s không được dùng nữa. Sử dụng %2$s thay thế. ' ),

                'type => link',

                'taxonomy => link_category'

)

);

        $args['phân loại'] = 'link_category';

    }

    $categories = get_terms( $args );

    if ( is_wp_error( $categories ) ) {

        $categories = array();

    } else {

        $categories = (mảng) $categories;

        foreach ( array_keys( $categories ) as $k ) {

            _make_cat_compat( $categories[ $k ] );

        }

    }

    return $categories;

}

Cú pháp sử dụng

1

get_categories( chuỗi. mảng $args = '' )

Thông số

$args. an array (mảng) Xác định các tham số khi truy vấn dữ liệu. Tùy mục đích bạn muốn lấy là gì, mảng này sẽ có thể bao gồm 1 hoặc tất cả các tham số sau

Các tham số này sẽ quyết định danh sách các “danh mục” được hiển thị

$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'category',
'pad_counts' => false
);

Giải thích

  • loại. ở đây là loại bài đăng. Default if not khai báo, it will get post type is post. Chúng ta có thể khai báo loại để xác định ví dụ như bài đăng, trang, sản phẩm (nếu muốn lấy danh mục sản phẩm trong Woocommerce)
  • đứa bé của. Chỉ có 1 hoặc 0. Mặc định khi không khai báo hoặc khai báo sai nó sẽ nhận là 0. 0 có nghĩa là lấy danh sách tất cả các danh mục, nếu là 1 thì nó chỉ lấy các danh mục con mà không lấy danh mục cha. Nhìn vào hình số 2 để hiểu thêm về danh mục con và danh mục cha
  • cha mẹ. Là id của danh mục cha. Nếu khai báo thì nó sẽ chỉ lấy các danh mục là con của danh mục được khai báo này
  • đặt bởi. Sắp xếp kết quả trả về theo cái gì? . id, tên, sên, số lượng, term_group. Default or not khai báo, orderby will be name
  • trật tự. ASC hoặc DESC. Sắp xếp theo chiều tăng hoặc giảm dần. Định nghĩa của nó là ngày càng tăng. TĂNG DẦN
  • hide_empty. 1 hoặc 0. Default is 1. Nếu khai báo là 1 thì nó chỉ hiển thị các danh mục đã có bài viết. 0 thì nó lấy cả, có bài viết hay chưa có bài viết nó đều hiển thị hết
  • thứ bậc. Show the Category theo dạng cây (tree list). Có là 1, không thì khai báo là 0
  • loại trừ. nhận giá trị là mảng (array). Nó là danh sách id các danh mục không muốn xuất hiện
  • bao gồm. Ngược lại so với loại trừ. Đây là một mảng chứa danh sách các danh mục id sẽ được hiển thị
  • con số. Số lượng Category muốn hiển thị. Ví dụ chỉ hiển thị danh mục 10 thì điền 10. Nếu website có nhiều hơn 10 danh mục mà số báo cáo là 10 thì kết quả cũng chỉ hiển thị 10 danh mục
  • phân loại học. Vì danh mục là một trong số rất nhiều phân loại trong wordpress nên ta có thể khai báo biến phân loại để lấy danh mục khác giống như thẻ không có giới hạn

Trở lại

Kết quả trả về của hàm này là một mảng chứa danh sách các “đối tượng danh mục“. Mỗi một đối tượng sẽ chứa danh sách các thuộc tính của một chủ đề như id, tên, mô tả, …

Các giá trị trả về trong đối tượng

[term_id]=> ID của category
[name]=> Tên hiển thị của category
[slug]=> đường dẫn slug của category
[term_group]=> Nhóm của category
[term_taxonomy_id]=> ID của Taxonomy
[taxonomy]=> Trả về taxonomy: category hoặc tag...
[description]=> Mô tả của category
[parent]=> ID của danh mục cha của category này
[count]=> Số bài viết trong category này
[filter]=> raw
[cat_ID] => ID của category
[category_count]=> Số bài viết trong category này
[category_description]=> Mô tả của category
[cat_name]=> Tên của category
[category_nicename]=> nicename của category
[category_parent]=> ID thư mục cha của category

Các ví dụ về lấy danh mục trong WordPress

Hiển thị tất cả các danh mục

Đoạn mã này sẽ hiển thị tất cả các danh mục đang có trên trang web WordPress của bạn, kể cả những danh mục không có bài viết nào và hiển thị ra bên ngoài văn bản phân cách các danh mục bằng dấu phẩy (,)

1

2

3

4

5

6

7

8

9

10

11

$args_cat = mảng(

'type' = > 'post',

'số' = > 100,

'hide_empty' = > 0,

'cha mẹ' = > 0

);

$categories_cat = get_categories( $args_cat );

$th_1234 = '''''''''''''''''''''''''''''''''';

foreach ( $categories_cat as $t_cat ) {

$th_1234 . = $t_cat - > . . ', ' ;

}

Kết quả nó sẽ hiển thị kiểu này

Nhận danh mục wordpress hiện tại

Lấy liên kết của một danh mục

Tiếp tục lấy ví dụ như bên trên, bên trong vòng lặp foreach, ta có thể lấy liên kết của một danh mục bằng cách sử dụng hàm get_term_link

1

2

3

4

5

6

7

8

$args_cat = mảng( 'type'< => 'post', 'number' => 100, 'hide_empty'=> 0, 'parent' => 0 );

$categories_cat = get_categories( $args_cat );

$th_1234 = ''''''''''''''''''''''''''''''''''''''';

foreach ( $categories_cat as $t_cat )

{

$th_1234 . = '.get_term_link($t_cat->slug, 'category').'">'. $t_cat - >tên. ', ' ;

}

echo $th_1234;

Time, results will show thisthế này

Nhận danh mục wordpress hiện tại

Hiển thị tất cả danh mục sản phẩm trong woocommerce

Các ví dụ bên trên là với bài đăng, còn đối với danh mục sản phẩm trong Woocommerce thì bạn chỉ cần thay phân loại từ danh mục thành sản phẩm_cat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

$args_cat = mảng(

'type' = > 'product',

'số' = > 100,

'hide_empty' = > 0,

'cha mẹ' = > 0

);

$categories_cat = get_categories( $args_cat );

$th_1234 = '''''''''''''''''''''''''''''''''''''''''''';<

foreach ( $categories_cat as $t_cat )

{

$th_1234 . = '.get_term_link($category->slug, 'product_cat').'">'. $t_cat - >tên. ', ' ;

}

?>

Nhận danh mục khi có cat_id

Lưu ý là đối với wordpress thì category là taxonomy. Khi đó muốn get category theo id, slug, name hay gì thì cũng quy về là lấy thông tin của taxonomy term. Cụ thể, giả sử ta muốn lấy danh mục khi biết ID danh mục là 18, lúc đó đoạn mã sẽ như thế này

1

2

3

// lấy tên thuật ngữ phân loại bằng sên

$category = get_term_by('id'<, 18, 'category');

$term_name = $category - >name;

Ở ví dụ bên trên, mình có sử dụng hàm get_term_by() để lấy dữ liệu về danh mục có ID 18. Giá trị trả về là một Đối tượng WP_Term với các thông tin đầy đủ về danh mục đó. Cụ thể, kết quả trả về sẽ như thế này

1

2

3

4

5

6

7

8

9

10

11

12

13

WP_Term Đối tượng

(

[term_id] = > 18

[tên] = > Tên ca Category có id là 18

[sên] = > slug-cua-category-co-id-18

[term_group] = > 0

[term_taxonomy_id] = > 18

[phân loại] = > category

[mô tả] = > Mô t ca category đây

[cha mẹ] = > 0

[đếm] = > 10

[bộ lọc] = > raw

)

Nhận danh mục khi biết tên danh mục

Tương tự như cách làm bên trên, ta chỉ cần thay id bằng tên. Lưu ý là cách này chỉ lấy thuật ngữ đầu tiên mà nó nhận được

1

2

3

// lấy ID danh mục theo tên danh mục

$category = get_term_by('name'<, 'Sức khỏe', 'category');

$term_name = $category - >name;

Nếu các bạn muốn lấy tất cả ID danh mục theo tên danh mục thì phải sử dụng hàm get_terms như bên dưới đây. Sở dĩ sử dụng cái get_term_by() nó không trả về hết kết quả là vì có thể nó có nhiều danh mục có cùng 1 tên, nhưng ID và slug nó khác nhau (danh mục cha, danh mục con chẳng hạn)

1

2

3

4

5

// Lấy các từ có tên bắt đầu bằng "my_name"

get_terms( 'danh mục', mảng( 'name__like' => 'my_name' ) );

 

// Lấy các từ có tên chứa "my_name"

get_terms( 'danh mục', mảng( 'search' => 'my_name' ) );

(Nhìn hình bên dưới sẽ thấy có thể có nhiều danh mục trùng tên nhưng lại có id khác nhau)

Nhận danh mục wordpress hiện tại

Get category when known slug

Nhận thông tin về danh mục khi biết slug cũng tương tự như vậy

1

2

3

// lấy tên thuật ngữ phân loại bằng sên

$category = get_term_by('slug'<, 'tin-tuc', 'category')

$term_name = $category - >name;

Hiển thị danh mục dưới dạng danh sách thả xuống chọn

Để hiển thị tất cả các danh mục trong danh sách thả xuống WordPress dưới dạng chọn, ta có thể sử dụng hàm wp_dropdown_categories()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

 

$args = mảng(

'show_option_all' = > '',<

'show_option_none' = > __( 'All categories' ),

'option_none_value' = > '',<

'orderby' = > 'ID',

'order' = > 'ASC',

'show_count' = > 1,

'hide_empty' = > 0,

'child_of' = > 0,

'bao gồm' = > '',<

'echo' = > 1,

'được chọn' = > 0,

'phân cấp' = > 1,

'tên' = > 'danh mục',

'id' = > 'category',

'class' = > 'form-control',

'độ sâu' = > 0,

'tab_index' = > 0,

'phân loại' = > 'danh mục',

'hide_if_empty' = > false,

'value_field' = > 'slug',

);

wp_dropdown_categories( $args );

 

?>

Ở đây các bạn cần lưu ý vài thông số

  • tiếng vang. 1 show display always ra html code chứ không cần echo nữa. Giá trị là 0 thì nó trả về dạng chuỗi
  • hide_empty. 0 là không ẩn danh mục không có bài viết nào. 1 là ẩn những danh mục chưa có bài viết
  • show_option_none. Là cái lựa chọn nó là lựa chọn đầu tiên được lựa chọn đầu tiên
  • tùy chọn_none_value. Is value value of the show_option_none side on
  • show_count. Is showing number bài viết của chuyên mục đó ngay sau tên của chuyên mục
  • value_field. is value in the value of the option that

Nhận danh mục wordpress hiện tại

Nhận danh mục Wooc Commerce và hiển thị dưới dạng danh sách chọn

Đối với post thì taxonomy là category, còn đối với Woocommerce thì taxonomy là product_cat. Bạn chỉ cần khai báo taxonomy còn các thứ khác thì tương tự như lấy danh mục của bài đăng thôi
Ví dụ.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

chức năng huyhoa_category_lists( )

{

$categories = get_categories(

mảng(

'hide_empty' = > 0,

'phân loại' = > 'product_cat' /

)

);

$category_lists = mảng();

$category_lists[0] = __( 'Select Product Category' , 'huyhoa' );

foreach( $categories as $category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category$category ){

$category_lists[$category - >term_id] = $category->name;

}

return $category_lists;

}

Liệt kê các bài viết theo danh mục

Về cơ bản thì không thể trực tiếp lấy bài viết và cả danh mục sau đó hiển thị ngay lập tức được trong WordPress. Tuy nhiên, chúng ta có thể sử dụng đường vòng một chút. Quy trình sẽ như thế này

Bước 1. Trước tiên, bạn cần tạo tùy chỉnh truy vấn WP_Query để truy xuất tất cả các bài đăng đã được xuất bản