Bỏ qua điều hướng

Nhiều chủ đề hiển thị các bài đăng, trang và danh mục đặc biệt, thường dựa trên ID. Ví dụ: phần bài đăng ‘Nổi bật’ trên trang chủ hoặc các danh mục được đánh dấu.

Trong một số trường hợp, các ID này được mã hóa cứng vào PHP của chủ đề và trong những trường hợp khác, người dùng chọn chúng trong màn hình cài đặt của chủ đề.

Để hiển thị chính xác, chủ đề cần chọn ID cho mỗi ngôn ngữ. Trong WPML , ID cho bài đăng, trang, danh mục và thẻ thay đổi khi ngôn ngữ thay đổi, vì vậy chủ đề cần sử dụng đúng ID của ngôn ngữ đang hoạt động.

WPML bao gồm hai tùy chọn để đạt được điều này.

Bạn có thể bật điều chỉnh ID tự động hoặc sử dụng wpml_object_id theo cách thủ công trong chủ đề của mình.

Lựa chọn nào để sử dụng?

Việc điều chỉnh ID tự động không yêu cầu thay đổi mã của bạn. Bạn có thể sử dụng nó với bất kỳ chủ đề nào và mọi thứ đều “hoạt động”. Nhược điểm của việc sử dụng nó là thời gian xử lý và quyền truy cập DB tăng lên một chút, vì WPML sẽ kết nối với nhiều chức năng và kiểm tra xem đầu ra có chính xác với ngôn ngữ đang hoạt động hay không.

Điều chỉnh ID thủ công bằng hàm wpml_object_id sẽ đạt được kết quả tương tự và có thể hiệu quả hơn về mặt xử lý. Tuy nhiên, nó yêu cầu mã hóa đáng kể trong chủ đề.

Nếu bạn đang xây dựng một chủ đề từ đầu, bạn nên cân nhắc sử dụng wpml_object_id để thực hiện thủ công. Nếu bạn đang bắt đầu với một chủ đề hiện có, việc hack và sửa đổi chủ đề có thể không thực tế và việc điều chỉnh ID tự động có lẽ là cách tốt nhất.

Trong mọi trường hợp, bằng cách sử dụng bất kỳ plugin bộ nhớ đệm nào, tác động hiệu suất của thao tác này sẽ giảm xuống mức không. Bộ nhớ đệm luôn được khuyến nghị cho các trang web có kích thước bất kỳ. WPML chạy tốt với WP Super CacheW3 Total Cache (chúng tôi cũng sử dụng trên các trang web khác nhau).

1) Tự động điều chỉnh ID

WPML có thể kết nối với các chức năng API WordPress , phát hiện thời điểm các mục cụ thể được tải và điều chỉnh ID để kết quả được điều chỉnh cho phù hợp với ngôn ngữ đang hoạt động.

Chức năng này được bật theo mặc định và có thể được truy cập qua WPMLNgôn ngữ :

Điều chỉnh ID cho chức năng đa ngôn ngữ

Điều này sẽ tự động điều chỉnh tất cả các ID và có thể được sử dụng trong bất kỳ chủ đề WordPress nào sử dụng API chính xác (hầu hết mọi chủ đề bạn có thể tìm thấy).

2) Thủ công, sử dụng hàm wpml_object_id

Ngoài ra, nếu tính năng điều chỉnh ID tự động bị tắt, bạn có thể sử dụng hàm wpml_object_id để thực hiện điều tương tự theo cách thủ công.

apply_filters( ‘wpml_object_id’, int $element_id, string $element_type, bool $return_origin_if_missing, hỗn hợp $ulingu_code )

Lưu ý: Đối với phiên bản WPML> =3.2 vui lòng sử dụng móc lọc wpml_object_id . Kể từ WPML 3.3, hàm icl_object_id đã được gắn thẻ là không dùng nữa và bị xóa hoàn toàn trong 3.3

Cách sử dụng ví dụ

echo apply_filters( 'wpml_object_id', 4, 'category', TRUE  );

Trả về ID danh mục bằng ngôn ngữ hiện tại cho ID danh mục 4. Nếu bản dịch bị thiếu, nó sẽ trả về bản gốc (ở đây: ID danh mục 4).

Vui lòng kiểm tra trang API của chúng tôi để xem các ví dụ khác và tìm thông tin chi tiết hơn về cách sử dụng nó

Dịch mảng ID

Nhiều khi bạn cần chuyển đổi toàn bộ mảng ID đối tượng (ID danh mục phổ biến nhất). Để làm điều này, bạn có thể sử dụng chức năng sau:

function lang_object_ids($object_id, $type) {
    if( is_array( $object_id ) ){
        $translated_object_ids = array();
        foreach ( $object_id as $id ) {
            $translated_object_ids[] = apply_filters( 'wpml_object_id', $id, $type, true, $current_language );
        }
        return $translated_object_ids;
    } else {
  return apply_filters( 'wpml_object_id', $object_id, $type, true, $current_language );
 }
}

Hàm này cũng chấp nhận loại đối tượng làm đối số.

Ví dụ: để lấy một mảng ID danh mục cho danh mục 1,3 và 6, chúng tôi sẽ gọi:

lang_object_ids(array(1,3,6),'category')

Hiển thị các thành phần trang bằng các ngôn ngữ khác nhau

Tham số ulingu_code tùy chọn cho phép trộn các thành phần trang bằng các ngôn ngữ khác nhau.

Ví dụ: nếu bạn có một thư viện hình ảnh và không muốn sao chép hình ảnh theo ngôn ngữ, hãy làm theo cách sau:

  1. Lấy ID của trang bằng ngôn ngữ mà thư viện tồn tại.
  2. Lặp lại các hình ảnh cho trang đó và hiển thị chúng.