PluginProbe
Polylang / trunk
Polylang vtrunk
3.8.10 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 All 234 releases
← All changes | src/admin/admin-base.php +59 -19 3.8.3 → trunk View file →
@@ -248,10 +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 - 'user' => array( array( 'profile', 'user-edit' ), array( 'jquery' ), false, false ),
253 - 'widgets' => array( array( 'widgets' ), array( 'jquery' ), false, false ),
252 + 'widgets' => array( array( 'widgets' ), array(), false, true ),
254 253 );
255 254
256 255 $block_screens = array( 'widgets', 'site-editor' );
257 256
@@ -287,10 +286,9 @@
287 286 }
288 287 }
289 288 }
290 289
291 - wp_register_style( 'polylang_admin', plugins_url( "/css/build/admin{$suffix}.css", POLYLANG_ROOT_FILE ), array( 'wp-jquery-ui-dialog' ), POLYLANG_VERSION );
292 - 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' ) );
293 291
294 292 $this->add_inline_scripts();
295 293 }
296 294
@@ -331,9 +329,9 @@
331 329 * @return void
332 330 */
333 331 private function add_inline_scripts() {
334 332 if ( wp_script_is( 'pll_block-editor', 'enqueued' ) ) {
335 - $default_lang_script = 'const pllDefaultLanguage = "' . $this->options['default_lang'] . '";';
333 + $default_lang_script = sprintf( 'const pllDefaultLanguage = %s;', wp_json_encode( $this->options['default_lang'] ) );
336 334 wp_add_inline_script(
337 335 'pll_block-editor',
338 336 $default_lang_script,
339 337 'before'
@@ -551,9 +549,9 @@
551 549 $wp_admin_bar->add_menu(
552 550 array(
553 551 'id' => 'languages',
554 552 'title' => $selected->flag . $title,
555 - 'href' => esc_url( add_query_arg( 'lang', $selected->slug, remove_query_arg( 'paged' ) ) ),
553 + 'href' => esc_url( $this->get_admin_bar_menu_url( $selected ) ),
556 554 'meta' => array(
557 555 'title' => __( 'Filters content by language', 'polylang' ),
558 556 'class' => 'all' === $selected->slug ? '' : 'pll-filtered-languages',
559 557 ),
@@ -568,10 +566,10 @@
568 566 $wp_admin_bar->add_menu(
569 567 array(
570 568 'parent' => 'languages',
571 569 'id' => $lang->slug,
572 - 'title' => $lang->flag . esc_html( $lang->name ),
573 - '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 ) ),
574 572 'meta' => 'all' === $lang->slug ? array() : array( 'lang' => esc_attr( $lang->get_locale( 'display' ) ) ),
575 573 )
576 574 );
577 575 }
@@ -577,8 +575,58 @@
577 575 }
578 576 }
579 577
580 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;
626 + }
627 +
628 + /**
581 629 * Remove the customize submenu when using a block theme.
582 630 *
583 631 * WordPress removes the Customizer menu if a block theme is activated and no other plugins interact with it.
584 632 * As Polylang interacts with the Customizer, we have to delete this menu ourselves in the case of a block theme,
@@ -605,9 +653,9 @@
605 653 }
606 654
607 655 /**
608 656 * Tells if the Polylang's admin bar menu should be hidden for the current page.
609 - * Conventionally, it should be hidden on edition pages.
657 + * Conventionally, it should be hidden on edition pages, term edit pages and Site Editor pages.
610 658 *
611 659 * @since 3.8
612 660 *
613 661 * @return bool
@@ -612,19 +660,11 @@
612 660 *
613 661 * @return bool
614 662 */
615 663 public function should_hide_admin_bar_menu(): bool {
616 - global $pagenow, $typenow, $taxnow;
664 + global $pagenow;
617 665
618 - if ( in_array( $pagenow, array( 'post.php', 'post-new.php' ), true ) ) {
619 - return ! empty( $typenow );
620 - }
621 -
622 - if ( 'term.php' === $pagenow ) {
623 - return ! empty( $taxnow );
624 - }
625 -
626 - return false;
666 + return in_array( $pagenow, array( 'post.php', 'post-new.php', 'site-editor.php', 'term.php' ), true );
627 667 }
628 668
629 669 /**
630 670 * Returns the ID of a Polylang's settings screen.