Sửa lỗi Mega menu không dịch Polylang cho widget

Bài viết này sẽ hướng dẫn cho các bạn cách khắc phục tình trạng Mega menu không dịch ngôn ngữ cho widget dùng Polylang. Đối với widget và một số đối tượng khác thì Polylang sẽ thêm vào một cái ô select gọi là languages choice. Nếu người dùng chọn tất cả language thì hệ thống sẽ tự động nhận diện ngôn ngữ hiện tại và dịch widget theo ngôn ngữ đó. Nếu người dùng chỉ chọn 1 language nhất định thì chỉ áp dụng cho ngôn ngữ đã được chọn.

Nguyên nhân đối với các widget sử dụng Mega menu không dịch đó là thiếu khung chọn ngôn ngữ này. Đối với các widget được kéo vào Mega menu thì nó sẽ được plugin lọc, lưu dữ liệu theo dạng khác so với các widget thông thường. Do vậy, bạn chỉ cần thêm cái ô chọn ngôn ngữ vào trong widget của Mega menu là được. Để làm được điều này thì bạn thêm vào tập tin functions.php của giao diện đoạn code sau:

function hocwp_theme_custom_in_widgets_form( $widget, $return, $instance ) {
	if ( $widget instanceof WP_Widget && class_exists( 'PLL_Walker_Dropdown' ) ) {
		global $polylang;
		$filter   = new PLL_Admin_Filters( $polylang );
		$dropdown = new PLL_Walker_Dropdown();

		$dropdown_html = $dropdown->walk(
			array_merge(
				array( (object) array( 'slug' => 0, 'name' => __( 'All languages', 'hocwp-theme' ) ) ),
				$filter->model->get_languages_list()
			),
			array(
				'name'     => $widget->id . '_lang_choice',
				'class'    => 'tags-input pll-lang-choice',
				'selected' => empty( $instance['pll_lang'] ) ? '' : $instance['pll_lang'],
			)
		);

		printf(
			'

', esc_attr( $widget->id . '_lang_choice' ), esc_html__( 'The widget is displayed for:', 'hocwp-theme' ), $dropdown_html // phpcs:ignore WordPress.Security.EscapeOutput ); } } add_action( 'in_widget_form', 'hocwp_theme_custom_in_widgets_form', 10, 3 );

Đoạn code bên trên sẽ có chức năng thêm một ô select chọn ngôn ngữ vào widget. Bạn sẽ chọn ngôn ngữ đối với các widget thông thường trên sidebar. Tạm thời bạn khắc phục tình trạng Polylang không dịch ngôn ngữ trên widget Mega menu như vậy. Sau này các nhà phát triển cập nhật lại tính năng này thì bạn xóa cái này đi để tránh trùng lặp. Chúc bạn thành công.

Không có bình luận.

Bạn có thể trở thành người đầu tiên để lại bình luận.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *