Я пытаюсь разместить тег <span> внутри тега оболочки <p> на странице оформления заказа для поля города доставки. Я пробовал много разных способов, но все они потерпели неудачу.

Вот моя попытка кода (не работает):

function hackies( $field, $key, $args, $value ) {

// Wrap all fields except first and last name.
if ( $key === 'shipping_city' ) {
    $field .= '<span>hello world</span>';
}

return $field;
}
add_filter( 'woocommerce_form_field_text', 'hackies', 10, 4);

Но не работает, кто-нибудь может с этим помочь?

2
Orela Studio 30 Сен 2020 в 00:24

1 ответ

Лучший ответ

Вы используете неправильный крючок и неправильный путь. Использование функции PHP str_replace() в перехваченной функции с использованием перехвата фильтра woocommerce_form_field выполняет свою работу:

add_filter( 'woocommerce_form_field', 'hackies', 10, 4);
function hackies( $field, $key, $args, $value ) {
    // Wrap all fields except first and last name.
    if ( $key === 'shipping_city' ) {
        $field = str_replace( array('<label ', '</span>'), array('<span class="special"><label ', '</span></span>'), $field );
    }
    return $field;
}

Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Это работает для полей типа "вводимый текст"… Для других типов полей требуется нечто иное.

2
LoicTheAztec 29 Сен 2020 в 22:35