WPML

Khi bạn đăng ký thủ công loại nội dung tùy chỉnh, WordPress cho phép bạn thiết lập một slug lưu trữ riêng biệt. Cách bạn cấu hình phần này sẽ quyết định xem slug có được dịch sang ngôn ngữ phụ của bạn hay không.

Khi đăng ký thủ công các loại nội dung tùy chỉnh, bạn có thể thiết lập một slug lưu trữ riêng biệt bằng cách sử dụng hàm has_archive.

WPML cho phép thiết lập has_archive thành một chuỗi văn bản. Tuy nhiên, nếu giá trị chuỗi được thiết lập thành một giá trị khác với rewrite['slug'], hoặc slug tên của loại nội dung tùy chỉnh không được thiết lập, thì slug lưu trữ sẽ không thể dịch được.

Thiết lập slug có thể dịch


Trong ví dụ mã này, chúng ta thiết lập 'has_archive' => true. Giả sử rằng slug book đã được dịch thành libro trong tiếng Tây Ban Nha, các liên kết lưu trữ sẽ như sau:

  • Tiếng Anh (ngôn ngữ mặc định): http://mydomain.tld/book/

  • Tiếng Tây Ban Nha (ngôn ngữ phụ): http://mydomain.tld/es/libro/

	 	 
add_action( 'init', 'create_post_type' );	 	 
function create_post_type() {	 	 
   register_post_type( 'book',	 	 
      array(	 	 
         'labels' => array(	 	 
            'name' => __( 'Books', 'textdomain' ),	 	 
            'singular_name' => __( 'Book', 'textdomain' )	 	 
         ),	 	 
         'public' => true,	 	 
         'has_archive' => true,	 	 
         'publicly_queryable' => true,	 	 
         'exclude_from_search' => false,	 	 
         'show_ui' => true,	 	 
         'show_in_menu' => true,	 	 
         'query_var' => true,	 	 
         'rewrite' => array('slug' => 'book'),	 	 
         'supports' => array('title','editor', 'custom-fields','thumbnail')	 	 
      )	 	 
   );	 	 
}	 	 

Thiết lập cùng một slug trong ngôn ngữ mặc định và ngôn ngữ phụ

Trong ví dụ mã này, chúng ta thiết lập một chuỗi văn bản cụ thể cho tham số 'has_archive' => 'my-books'. Bây giờ các liên kết lưu trữ sẽ như sau:
  • Tiếng Anh (ngôn ngữ mặc định): http://mydomain.tld/my-books/
  • Tiếng Tây Ban Nha (ngôn ngữ phụ): http://mydomain.tld/es/my-books/
	 	 
add_action( 'init', 'create_post_type' );	 	 
function create_post_type() {	 	 
   register_post_type( 'book',	 	 
      array(	 	 
         'labels' => array(	 	 
            'name' => __( 'Books', 'textdomain' ),	 	 
            'singular_name' => __( 'Book', 'textdomain' )	 	 
         ),	 	 
         'public' => true,	 	 
         'has_archive' => 'my-books', // Do not use the gettext functions for this parameter	 	 
         'publicly_queryable' => true,	 	 
         'exclude_from_search' => false,	 	 
         'show_ui' => true,	 	 
         'show_in_menu' => true,	 	 
         'query_var' => true,	 	 
         'rewrite' => array('slug' => 'book'),	 	 
         'supports' => array('title','editor', 'custom-fields','thumbnail')	 	 
      )	 	 
   );	 	 
}	 	 

Khắc phục sự cố với slug có thể tùy chỉnh


Một số giao diện và plugin cho phép quản trị viên trang web thiết lập slug tùy chỉnh cho các loại nội dung tùy chỉnh và phân loại tùy chỉnh của họ.

Nếu các slug tùy chỉnh đã dịch của bạn trả về lỗi 404, vui lòng kiểm tra những điều sau:


  • Loại nội dung tùy chỉnh phải luôn được đăng ký với cùng một slug trên tất cả các yêu cầu: theo ngôn ngữ, frontend, backend, AJAX, heartbeat, v.v. Vì vậy, trong 'rewrite' => [ 'slug' => $my_custom_slug ],, giá trị của $my_custom_slug không được thay đổi từ yêu cầu này sang yêu cầu khác ngay cả khi nó đến từ một tùy chọn (hoặc bất kỳ cài đặt tùy chỉnh nào).

  • WPML chỉ hỗ trợ dịch slug tùy chỉnh (khi loại nội dung tùy chỉnh được đăng ký) chứ không hỗ trợ cấu trúc đường dẫn tĩnh tùy chỉnh.

  • Nếu slug tùy chỉnh được lưu trữ dưới dạng một tùy chọn, nó không nên được đăng ký dưới dạng admin-texts trong tệp wpml-config.xml.

  • Sau khi cập nhật giá trị của slug tùy chỉnh, giao diện/plugin cũng nên làm mới các quy tắc viết lại (bằng cách gọi flush_rewrite_rules();).

Được viết bởi Amir · Cập nhật lần cuối vào 30 tháng 5 năm 2024