WooCommerce: переопределить заголовок, установленный для вкладки браузеров на странице моей учетной записи - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я пытаюсь изменить набор заголовков на вкладке браузеров при посещении страницы My Account в WooCommerce.

Когда я, например, захожу на страницу Orders, вкладка все еще называется My Account, и это не так приятно.У него всегда должно быть имя конечной точки / account_menu_items.Я пробовал это здесь, но это меняет только заголовок содержимого меню в левом верхнем углу:

/**
 * Change title for menu items
 */
add_filter( 'the_title', 'custom_account_endpoint_titles' );
function custom_account_endpoint_titles( $title ) {
    global $wp_query;

    if ( in_the_loop() && isset( $wp_query->query_vars['orders'] ) ) {
        return 'Orders';
    }

    return $title;
}

Снимок экрана:

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Я наконец нашел фильтр и способ его изменить:

/**
 * Override woocommerce account endpoint titles in the browser tab
 */
add_filter( 'wpseo_title', 'woocommerce_endpoint_titles' );
function woocommerce_endpoint_titles( $title ) {
    $sep       = ' – ';
    $sitetitle = get_bloginfo();

    if ( is_wc_endpoint_url( 'orders' ) ) {
        $title = 'Bestellungen' . $sep . $sitetitle;
    } elseif ( is_wc_endpoint_url( 'view-order' ) ) {
        $title = 'Bestellung' . $sep . $sitetitle;
    }

    return $title;
}

Если вы создали свои собственные конечные точки в WooCommerce, вы также можете использовать этот фильтр, но сначала вам нужно зарегистрировать свои собственные конечные точки.Вы можете сделать это следующим образом:

/**
 * Add custom menu items to wc query vars so that we can use is_wc_endpoint_url()
 */
add_filter( 'woocommerce_get_query_vars', 'add_items_to_query_vars' );
function add_items_to_query_vars( $vars ) {

    foreach ( [ 'custom-endpoint-1', 'custom-endpoint-2' ] as $e ) {
        $vars[ $e ] = $e;
    }

    return $vars;
}

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 28 декабря 2018

Попробуйте вместо этого использовать фильтр pre_get_document_title, так как это позволит вам изменить его до его отрисовки.

Обратите внимание, что $title_pieces на самом деле является массивом, который выглядит как

array (
  'title' => 'title example',
  'tagline' => 'just another wordpress blog'
}

Так что вам нужно сделать это следующим образом

add_filter( 'pre_get_document_title', 'custom_account_endpoint_titles' );

function custom_account_endpoint_titles($title_pieces) {

    global $wp_query;

    if ( in_the_loop() && isset( $wp_query->query_vars['orders'] ) ) {

      $title_pieces['title'] = 'Orders';
      //$title_pieces['tagline'] = 'Your tag line'; Set a tag line if you want to

      return $title_pieces;
    }

    return $title_pieces;

}

Кроме того, убедитесь, что вы сбросили значение $wp_query->query_vars['orders'], чтобы убедиться, что это значение действительно вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...