WPML
apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
Loại
filter
Phiên bản WPML
3.2

Miêu tả

Trả về ID của một phần tử trong ngôn ngữ hiện tại hoặc trong một ngôn ngữ được chỉ định khác.

Theo mặc định, WPML tự động điều chỉnh các ID để hiển thị tất cả các phần tử của giao diện trong ngôn ngữ hiện tại. Cài đặt này được “bật” theo mặc định trong trang WPMLNgôn ngữ. Nhưng nếu bạn đang xây dựng giao diện của riêng mình từ đầu, hãy sử dụng hàm wpml_object_id để điều chỉnh các ID theo cách thủ công. Cách tiếp cận này hiệu quả hơn về mặt xử lý.

Đối số

$element_id
(int) (Bắt buộc) ID của loại bài viết (post, page, attachment, custom post) hoặc thuật ngữ phân loại (tag, category, custom taxonomy) cần lọc
$element_type
(string) (Bắt buộc) Loại phần tử mà ID thuộc về. Có thể là post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
$return_original_if_missing
(bool) (Tùy chọn) Nếu được đặt thành true, nó sẽ luôn trả về một giá trị (giá trị gốc, nếu thiếu bản dịch). Mặc định là FALSE
$ulanguage_code
(mixed) (Tùy chọn) Nếu thiếu hoặc là NULL, nó sẽ sử dụng ngôn ngữ hiện tại. Nếu được đặt thành một mã ngôn ngữ, nó sẽ trả về bản dịch cho mã ngôn ngữ đó hoặc bản gốc nếu thiếu bản dịch và $return_original_if_missing được đặt thành TRUE. Mặc định là NULL

Ví dụ sử dụng

Một số ví dụ cơ bản
// will return the post ID in the current language for post ID 1
echo apply_filters( 'wpml_object_id', 1, 'post' );

// will return the category ID in the current language for categoy ID 4. If the translation is missing it will return the original (here: category ID 4)
echo apply_filters( 'wpml_object_id', 4, 'category', TRUE  );

// will return the German attachment ID for attachment ID 25. If the translation is missing it will return NULL
echo apply_filters( 'wpml_object_id', 25, 'attachment', FALSE, 'de' );
Một ví dụ nâng cao hơn
/**
 * Returns the translated object ID(post_type or term) or original if missing
 *
 * @param $object_id integer|string|array The ID/s of the objects to check and return
 * @param $type the object type: post, page, {custom post type name}, nav_menu, nav_menu_item, category, tag etc.
 * @return string or array of object ids
 */
function my_translate_object_id( $object_id, $type ) {
    $current_language= apply_filters( 'wpml_current_language', NULL );
    // if array
    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;
    }
    // if string
    elseif( is_string( $object_id ) ) {
        // check if we have a comma separated ID string
        $is_comma_separated = strpos( $object_id,"," );

        if( $is_comma_separated !== FALSE ) {
            // explode the comma to create an array of IDs
            $object_id     = explode( ',', $object_id );

            $translated_object_ids = array();
            foreach ( $object_id as $id ) {
                $translated_object_ids[] = apply_filters ( 'wpml_object_id', $id, $type, true, $current_language );
            }

            // make sure the output is a comma separated string (the same way it came in!)
            return implode ( ',', $translated_object_ids );
        }
        // if we don't find a comma in the string then this is a single ID
        else {
            return apply_filters( 'wpml_object_id', intval( $object_id ), $type, true, $current_language );
        }
    }
    // if int
    else {
        return apply_filters( 'wpml_object_id', $object_id, $type, true, $current_language );
    }
}

wpml_media_url, wpml_media_id, force_suppress_filters, wpml_get_translated_slug, wpml_home_url, wpml_translate_single_string, wpml_translate_string, wpml_elements_without_translations, wpml_permalink, wpml_unfiltered_admin_string

Tất cả 12 hook Truy xuất nội dung đã bản địa hóa →