Thêm custom meta fields vào taxonomies WordPress

19 giờ ago, Hướng dẫn WordPress, Views
Thêm custom meta fields vào taxonomies WordPress

Giới thiệu về Custom Meta Fields cho Taxonomies trong WordPress

Trong WordPress, taxonomies (phân loại) là một công cụ mạnh mẽ để tổ chức và phân loại nội dung. Categories (chuyên mục) và Tags (thẻ) là hai ví dụ phổ biến nhất về taxonomies. Tuy nhiên, đôi khi, bạn cần lưu trữ thêm thông tin liên quan đến một taxonomy term (thuật ngữ phân loại) cụ thể mà WordPress mặc định không cung cấp. Đây là lúc custom meta fields (trường meta tùy chỉnh) phát huy tác dụng.

Custom meta fields cho phép bạn thêm các trường dữ liệu bổ sung vào các taxonomy terms, ví dụ: bạn có thể thêm một trường để lưu trữ hình ảnh đại diện cho một category, mô tả nâng cao cho một tag, hoặc thậm chí một trường chọn màu sắc cho một category cụ thể. Việc này mở ra nhiều khả năng tùy biến và cải thiện trải nghiệm người dùng trên website của bạn.

Bài viết này sẽ hướng dẫn bạn cách thêm custom meta fields vào taxonomies trong WordPress bằng cách sử dụng các phương pháp khác nhau, bao gồm cả việc sử dụng code trực tiếp và sử dụng các plugin.

Tại sao cần Custom Meta Fields cho Taxonomies?

Việc sử dụng custom meta fields cho taxonomies mang lại nhiều lợi ích:

  • Tổ chức nội dung tốt hơn: Bạn có thể thêm thông tin bổ sung vào taxonomy terms để mô tả chi tiết hơn, giúp người dùng dễ dàng tìm kiếm và lọc nội dung.
  • Tùy biến giao diện: Bạn có thể sử dụng dữ liệu từ custom meta fields để tùy biến giao diện trang taxonomy, ví dụ: hiển thị hình ảnh đại diện cho category.
  • Cải thiện SEO: Bạn có thể thêm các trường meta liên quan đến SEO, như mô tả meta hoặc từ khóa, để cải thiện thứ hạng tìm kiếm.
  • Mở rộng chức năng: Custom meta fields cho phép bạn mở rộng chức năng của taxonomies để đáp ứng các nhu cầu cụ thể của dự án.

Cách thêm Custom Meta Fields cho Taxonomies bằng Code

Cách này đòi hỏi bạn phải có kiến thức về PHP và WordPress. Chúng ta sẽ sử dụng các hooks (điểm móc) do WordPress cung cấp để thêm các trường meta vào form chỉnh sửa taxonomy term và lưu trữ dữ liệu.

Bước 1: Thêm Fields vào Form Chỉnh Sửa Taxonomy Term

Sử dụng hook `edit_term_fields` để thêm các trường meta vào form chỉnh sửa taxonomy term. Ví dụ, để thêm một trường text cho category, bạn có thể sử dụng đoạn code sau:


function add_category_fields( $term ) {
    $term_id = $term->term_id;
    $term_meta = get_option( "category_meta_$term_id" );
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="category_text">Mô tả chi tiết</label></th>
        <td>
            <input type="text" name="category_text" id="category_text" value="<?php echo esc_attr( isset( $term_meta['category_text'] ) ? $term_meta['category_text'] : '' ) ?>">
            <p class="description">Nhập mô tả chi tiết cho category này.</p>
        </td>
    </tr>
    <?php
}
add_action( 'edit_category_form_fields', 'add_category_fields' );

Code này thêm một trường text có label “Mô tả chi tiết” vào form chỉnh sửa category. `get_option` được sử dụng để lấy giá trị đã lưu trữ của trường meta.

Bước 2: Lưu Trữ Dữ Liệu của Custom Meta Fields

Sử dụng hook `edited_term` để lưu trữ dữ liệu của custom meta fields khi taxonomy term được cập nhật. Ví dụ:


function save_category_fields( $term_id ) {
    if ( isset( $_POST['category_text'] ) ) {
        $term_meta = get_option( "category_meta_$term_id" );
        if ( ! is_array( $term_meta ) ) {
            $term_meta = array();
        }
        $term_meta['category_text'] = sanitize_text_field( $_POST['category_text'] );
        update_option( "category_meta_$term_id", $term_meta );
    }
}
add_action( 'edited_category', 'save_category_fields' );

Code này kiểm tra xem trường `category_text` có được gửi hay không. Nếu có, nó sẽ lưu trữ giá trị của trường này vào một option có tên `category_meta_$term_id`. Hàm `sanitize_text_field` được sử dụng để làm sạch dữ liệu trước khi lưu trữ.

Bước 3: Thêm Fields vào Form Tạo Mới Taxonomy Term

Tương tự như khi chỉnh sửa, bạn cần thêm fields vào form tạo mới taxonomy term bằng hook `create_term_fields`. Ví dụ:


function add_new_category_fields( $taxonomy ) {
    ?>
    <div class="form-field">
        <label for="category_text">Mô tả chi tiết</label>
        <input type="text" name="category_text" id="category_text" value="">
        <p class="description">Nhập mô tả chi tiết cho category này.</p>
    </div>
    <?php
}
add_action( 'category_add_form_fields', 'add_new_category_fields' );

Bước 4: Lưu Trữ Dữ Liệu khi Tạo Mới Taxonomy Term

Sử dụng hook `created_term` để lưu trữ dữ liệu khi một taxonomy term mới được tạo. Ví dụ:


function save_new_category_fields( $term_id ) {
    if ( isset( $_POST['category_text'] ) ) {
        $term_meta = get_option( "category_meta_$term_id" );
        if ( ! is_array( $term_meta ) ) {
            $term_meta = array();
        }
        $term_meta['category_text'] = sanitize_text_field( $_POST['category_text'] );
        update_option( "category_meta_$term_id", $term_meta );
    }
}
add_action( 'created_category', 'save_new_category_fields' );

Lưu ý:

  • Thay thế `category` bằng tên taxonomy của bạn (ví dụ: `post_tag` cho tag).
  • Bạn cần đặt đoạn code này vào file `functions.php` của theme hoặc tạo một plugin tùy chỉnh.
  • Cẩn thận khi chỉnh sửa file `functions.php` vì lỗi có thể gây ra sự cố cho website.

Sử dụng Plugin để Thêm Custom Meta Fields cho Taxonomies

Nếu bạn không muốn viết code, có nhiều plugin miễn phí và trả phí có thể giúp bạn thêm custom meta fields vào taxonomies một cách dễ dàng. Một số plugin phổ biến bao gồm:

  • ACF (Advanced Custom Fields): Plugin mạnh mẽ và linh hoạt, cho phép bạn tạo các trường meta tùy chỉnh cho nhiều loại nội dung, bao gồm cả taxonomies.
  • Meta Box: Một plugin khác cho phép bạn tạo các trường meta tùy chỉnh với giao diện người dùng thân thiện.
  • Custom Field Suite: Một lựa chọn đơn giản hơn với các tính năng cơ bản để thêm custom meta fields.

Ví dụ: Sử dụng ACF để Thêm Custom Meta Fields cho Taxonomies

ACF là một trong những plugin phổ biến nhất để tạo custom meta fields. Để sử dụng ACF để thêm meta fields cho taxonomy:

  1. Cài đặt và kích hoạt plugin ACF.
  2. Truy cập “Custom Fields” -> “Add New” trong WordPress dashboard.
  3. Đặt tên cho field group (ví dụ: “Category Meta”).
  4. Trong phần “Location Rules”, chọn “Taxonomy Term” và taxonomy mà bạn muốn thêm fields (ví dụ: “Category”).
  5. Thêm các fields bạn muốn, chẳng hạn như Text, Image, Select, v.v.
  6. Nhấn “Publish” để lưu field group.

Sau khi bạn đã tạo field group, các fields sẽ xuất hiện trong form chỉnh sửa taxonomy term. Bạn có thể dễ dàng nhập dữ liệu và lưu trữ.

Hiển thị Custom Meta Fields trên Website

Sau khi bạn đã thêm và lưu trữ dữ liệu cho custom meta fields, bạn cần hiển thị chúng trên website. Cách thực hiện tùy thuộc vào phương pháp bạn sử dụng để thêm fields (code trực tiếp hoặc plugin).

Hiển thị bằng Code

Nếu bạn đã thêm fields bằng code, bạn có thể sử dụng hàm `get_option` để lấy giá trị của field và hiển thị nó. Ví dụ, để hiển thị trường `category_text` mà chúng ta đã thêm ở trên:


<?php
$term_id = get_queried_object_id();
$term_meta = get_option( "category_meta_$term_id" );
if ( isset( $term_meta['category_text'] ) && ! empty( $term_meta['category_text'] ) ) {
    echo '<p>' . esc_html( $term_meta['category_text'] ) . '</p>';
}
?>

Đoạn code này lấy ID của taxonomy term hiện tại, lấy giá trị của trường `category_text` và hiển thị nó trong một thẻ <p>.

Hiển thị bằng Plugin (ACF)

Nếu bạn sử dụng ACF, bạn có thể sử dụng hàm `get_field` để lấy giá trị của field và hiển thị nó. Ví dụ, để hiển thị một trường có tên là `category_image`:


<?php
$image = get_field('category_image', 'category_' . get_queried_object_id());
if( !empty($image) ): ?>
    <img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
<?php endif; ?>

Đoạn code này lấy giá trị của trường `category_image` cho taxonomy term hiện tại và hiển thị nó trong một thẻ <img>.

Kết luận

Custom meta fields cho taxonomies là một công cụ mạnh mẽ để mở rộng chức năng và tùy biến website WordPress của bạn. Bạn có thể sử dụng code trực tiếp hoặc các plugin để thêm và quản lý custom meta fields một cách dễ dàng. Hãy thử nghiệm và khám phá các khả năng mà custom meta fields mang lại để tạo ra một website độc đáo và chuyên nghiệp.