Измените Текстовые Строки На Определенных Конечных Точках WooCommerce

#php #wordpress #woocommerce #gettext

Вопрос:

Я пытаюсь условно изменить строки в конечных точках моей учетной записи WooCommerce. Каждый раз, когда я пытаюсь добавить условие конечной точки, оно либо нарушает работу сайта, либо не работает; однако, когда я не использую условие, работает замена строки. Может быть, кто-нибудь сможет указать, где я иду не так.

Рабочий Фрагмент — Без Условий

 function change_endpoint_text( $translated ) {
        
    $translated = str_ireplace( 'List of coupons which are valid amp; available for use. Click on the coupon to use it. The coupon discount will be visible only when at least one product is present in the cart.', 'List of vouchers which are valid amp; available for use. Click on a voucher to use it. The discount will be visible only when at least one product is present in the cart.', $translated );

    return $translated;
}
add_filter( 'gettext', 'change_endpoint_text' );
 

Тест Условного Фрагмента Кода — Не Работает

Примечание: Я также попытался использовать условие is_account_page, которое, казалось, нарушило работу сайта.

 function change_endpoint_text( $translated ) {
    if( is_wc_endpoint_url('wc-smart-coupons') ) {
        
        $translated = str_ireplace( 'List of coupons which are valid amp; available for use. Click on the coupon to use it. The coupon discount will be visible only when at least one product is present in the cart.', 'List of vouchers which are valid amp; available for use. Click on a voucher to use it. The discount will be visible only when at least one product is present in the cart.', $translated );

    }

    return $translated;
}
add_filter( 'gettext', 'change_endpoint_text' );
 

Любая помощь будет признательна.

Комментарии:

1. Просто чтобы уточнить, что именно вы пытаетесь проверить с помощью is_wc_endpoint_url ? Откуда это wc-smart-coupons берется? Вы используете сторонний плагин?

2. @Ruvee — Я пытаюсь проверить, нахожусь ли я на определенной конечной точке, и если да, то продолжаю перевод. В моем примере конечная wc-smart-coupons точка поступает из плагина смарт-купонов WooCommerce, но это только для одной строки. Если бы я мог успешно нацелить строку на любую конечную точку, я мог бы изменять сообщения и в других областях. Например, текст «Следующие адреса будут использоваться на странице оформления заказа по умолчанию» на edit-adressess конечной точке в качестве примера. Я не уверен, что я все усложняю или делаю это совершенно неправильно, честно говоря.

3. Вот что я подумал, вы используете сторонний плагин. Регистрирует ли этот плагин дополнительные конечные точки? Я думаю is_wc_endpoint_url , что распознает только конечные точки woocommerce по умолчанию, найденные в настройках woocommerce. Это wc-smart-coupons отдельная страница или это просто query variable ?

4. @Руви — Ааааа. Я не понимал, что он будет распознавать только конечные точки по умолчанию. Это отдельная «страница», очень похожая на то, как вы видите любые другие конечные точки (т. Е. загрузки, адреса и т. Д.).

Ответ №1:

Вы также можете проверить наличие конечных точек с помощью $wp->query_vars['custom_endpoint'] .

Например,

 function change_endpoint_text ( $translated_text, $text, $domain ) {
  global $wp;

  if ( isset( $wp->query_vars['wc-smart-coupons'] ) ) {

    if ($translated_text == 'some existing text') {
      $translated_text = __( 'The new replaced text', 'woocommerce');
    }

  }
  return $translated_text;
}
add_filter( 'gettext', 'change_endpoint_text' );

 

Комментарии:

1. Приведенный выше фрагмент вызывает ошибку 500, но вы и Руви выше определенно указали на то, чего я не понимал, что is_wc_endpoint_url я буду продолжать возиться. 🙂