PluginProbe
Polylang / trunk
Polylang vtrunk
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
← All changes | src/admin/admin-base.php +55 -6 3.8.9 → trunk View file →
@@ -248,9 +248,9 @@
248 248 * 2 => true if loaded even if languages have not been defined yet, false otherwise
249 249 * 3 => true if loaded in footer
250 250 */
251 251 $scripts = array(
252 - 'widgets' => array( array( 'widgets' ), array( 'jquery' ), false, false ),
252 + 'widgets' => array( array( 'widgets' ), array(), false, true ),
253 253 );
254 254
255 255 $block_screens = array( 'widgets', 'site-editor' );
256 256
@@ -286,10 +286,9 @@
286 286 }
287 287 }
288 288 }
289 289
290 - wp_register_style( 'polylang_admin', plugins_url( "/css/build/admin{$suffix}.css", POLYLANG_ROOT_FILE ), array( 'wp-jquery-ui-dialog' ), POLYLANG_VERSION );
291 - wp_enqueue_style( 'polylang_dialog', plugins_url( "/css/build/dialog{$suffix}.css", POLYLANG_ROOT_FILE ), array( 'polylang_admin' ), POLYLANG_VERSION );
290 + pll_enqueue_style( 'admin', array( 'wp-jquery-ui-dialog' ) );
292 291
293 292 $this->add_inline_scripts();
294 293 }
295 294
@@ -550,9 +549,9 @@
550 549 $wp_admin_bar->add_menu(
551 550 array(
552 551 'id' => 'languages',
553 552 'title' => $selected->flag . $title,
554 - 'href' => esc_url( add_query_arg( 'lang', $selected->slug, remove_query_arg( 'paged' ) ) ),
553 + 'href' => esc_url( $this->get_admin_bar_menu_url( $selected ) ),
555 554 'meta' => array(
556 555 'title' => __( 'Filters content by language', 'polylang' ),
557 556 'class' => 'all' === $selected->slug ? '' : 'pll-filtered-languages',
558 557 ),
@@ -567,14 +566,64 @@
567 566 $wp_admin_bar->add_menu(
568 567 array(
569 568 'parent' => 'languages',
570 569 'id' => $lang->slug,
571 - 'title' => $lang->flag . esc_html( $lang->name ),
572 - 'href' => esc_url( add_query_arg( 'lang', $lang->slug, remove_query_arg( 'paged' ) ) ),
570 + 'title' => sprintf( '%s %s', 'all' === $lang->slug ? $lang->flag : $lang->get_admin_flag( 'aria-hidden' ), esc_html( $lang->name ) ),
571 + 'href' => esc_url( $this->get_admin_bar_menu_url( $lang ) ),
573 572 'meta' => 'all' === $lang->slug ? array() : array( 'lang' => esc_attr( $lang->get_locale( 'display' ) ) ),
574 573 )
575 574 );
576 575 }
576 + }
577 +
578 + /**
579 + * Returns the admin language filter url for a given language.
580 + *
581 + * @since 3.9
582 + *
583 + * @param object $language The language or an object for all languages.
584 + * @return string
585 + *
586 + * @phpstan-param object{'slug': string} $language
587 + */
588 + protected function get_admin_bar_menu_url( $language ): string {
589 + global $pagenow, $post_type;
590 +
591 + $url = add_query_arg( 'lang', $language->slug, remove_query_arg( 'paged' ) );
592 +
593 + if ( 'edit.php' !== $pagenow || ! $language instanceof PLL_Language ) {
594 + return $url;
595 + }
596 +
597 + // Attempt to translate the category (taxonomy) filter if present.
598 + if ( ! $post_type ) {
599 + return $url;
600 + }
601 +
602 + foreach ( get_object_taxonomies( $post_type, 'objects' ) as $tax ) {
603 + if ( ! $this->model->is_translated_taxonomy( $tax->name ) ) {
604 + continue;
605 + }
606 +
607 + $query_var = (string) $tax->query_var;
608 + $qv = get_query_var( $query_var );
609 + if ( empty( $qv ) || ! is_string( $qv ) ) {
610 + continue;
611 + }
612 +
613 + $qv = $this->model->term->get_by( 'slug', $qv, $language, $tax->name );
614 +
615 + if ( ! empty( $qv ) ) {
616 + $url = add_query_arg( $query_var, $qv, remove_query_arg( $query_var, $url ) );
617 + }
618 +
619 + // For categories, we translated 'category_name'. We must remove 'cat' to avoid conflicts.
620 + if ( 'category' === $tax->name ) {
621 + $url = remove_query_arg( 'cat', $url );
622 + }
623 + }
624 +
625 + return $url;
577 626 }
578 627
579 628 /**
580 629 * Remove the customize submenu when using a block theme.