‹br› код разрыва ссылки не работает в function.php (Polylang)

Вот обновление моего кода, и я все еще не могу добавить разрыв ссылки с помощью предоставленного решения. Проверьте код ниже.

function gift_sender( $cart_item, $cart_item_key ) {
    $gsender = isset( $cart_item['gsender'] ) ? $cart_item['gsender'] : '';
    $gift_label_string = pll_e('Gift Receiver:');
    printf(
    '<br><div><label>%s</label> <textarea class="%s" id="cart_notes_%s" data-cart-id="%s">%s</textarea></div>',
    'prefix-cart-notes',
    $cart_item_key,
    $cart_item_key,
    $gsender
    );
 }
add_action( 'woocommerce_after_cart_item_name', 'gift_sender', 10, 2 );


function gift_receiver( $cart_item, $cart_item_key ) {
    $greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
    $contact_label_string = pll_e('Contact No:');
    printf(
    '<br><div><label>%s</label> <textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea></div>',
    'prefix-cart-notes',
    $cart_item_key,
    $cart_item_key,
    $greceiver
    );
 }
add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );

person Jerry Tan    schedule 17.05.2020    source источник
comment
проверьте код в браузере.есть ли бр ?   -  person Madhawa Priyashantha    schedule 17.05.2020


Ответы (2)


Если вы проверите свой код во внешнем интерфейсе с помощью браузера, вы увидите следующее:

Gift Receiver:<div><label></label> <textarea class="prefix-cart-notes" id="cart_notes_cb48bddd1d90be26114366aaaad95806" data-cart-id="cb48bddd1d90be26114366aaaad95806"></textarea></div>

Итак, вы видите, что строка находится не внутри тегов label. Вот почему разрыв не происходит в нужном месте.

Пожалуйста, попробуйте сохранить переведенную строку в переменной раньше, а затем поместите ее в свой файл printf.

function gift_sender( $cart_item, $cart_item_key ) {
    $gsender = isset( $cart_item['gsender'] ) ? $cart_item['gsender'] : '';
    $cart_label_string = pll_e('Gift Receiver:');
    printf(
    '<br><div><label>%s</label> <textarea class="%s" id="cart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
    $cart_label_string,
    $cart_item_key,
    $cart_item_key,
    $gsender);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_sender', 10, 2 );

Надеюсь это поможет.

person rank    schedule 17.05.2020
comment
Я сохранил строковую переменную, но она тоже не работает. - person Jerry Tan; 17.05.2020
comment
Я проверил вашу ссылку, все работает нормально, и строка находится внутри этикетки. Вы как-то по-другому решили? Если бы мое решение помогло, был бы рад, если бы вы приняли ответ. Если нет, поделитесь своим решением, я хотел бы знать, спасибо. - person rank; 17.05.2020
comment
Нет, я не решил. Решение не работает. jinyeye.com.my/staging1/cart, вы можете добавить товар в корзину и попробуйте. - person Jerry Tan; 17.05.2020
comment
Когда я посмотрел 20 минут назад, он отображался нормально, но с текстовыми областями. Куда пропало текстовое поле? теперь похоже на другую разметку. Тогда вам придется изменить код. Можете ли вы обновить свой код? Отредактируйте свой вопрос и дайте подсказку РЕДАКТИРОВАТЬ: изменен код... чтобы другие знали, что есть некоторый прогресс. - person rank; 17.05.2020
comment
Пожалуйста, взгляните на свой вопрос, что-то пошло не так, когда вы вставили код. Было бы здорово, если бы вы показали полные две функции, как они выглядят сейчас. В вашей корзине больше нет текстовых полей, поэтому эта разметка должна быть изменена. Также вы проследили, чтобы я добавил переменную внутри printf ` 'prefix-cart-notes', $cart_label_string, ` Но я думаю, вы должны показать нам полные функции, как они выглядят сейчас. - person rank; 18.05.2020
comment
Я правильно обновил свой код. Я вижу это на своей стороне. - person Jerry Tan; 18.05.2020
comment
Но я не вижу php-код на вашей стороне;). Если вы хотите, чтобы я смог вам помочь, отредактируйте свой вопрос и вставьте код (обе функции), которые вы используете в настоящее время. Иначе не могу понять в чем дело. - person rank; 18.05.2020
comment
Я не могу редактировать и обновлять свой текущий код. И что же мне делать? - person Jerry Tan; 18.05.2020
comment
Если вы можете указать свой адрес электронной почты, я могу отправить его вам. - person Jerry Tan; 18.05.2020
comment
Разве под вашим вопросом нет доступной ссылки для редактирования? Я не могу дать вам свою почту. Но вы можете просто сделать jsfiddle (jsfiddle.net) или аналогичный, чтобы показать мне свой код, если у вас есть проблемы с ТАК редактирование - person rank; 18.05.2020
comment
Когда я хочу сохранить как черновик, он показывает: Ваше сообщение содержит код, который неправильно отформатирован как код. Сделайте отступ всего кода на 4 пробела, используя кнопку на панели инструментов кода или сочетание клавиш CTRL+K. Чтобы получить дополнительную справку по редактированию, щелкните значок [?] на панели инструментов. - person Jerry Tan; 18.05.2020
comment
Думаю, я просто покажу вам скриншот текущего кода: ibb.co/nm6M6yG - person Jerry Tan; 18.05.2020
comment
Вы забыли переменную, как я сказал. В printf вы используете %s. Это заполнитель для переменной, которую вы добавляете в конце. $cart_item_key используется там дважды, если вы понимаете, что я имею в виду. Проверьте мой ответ, есть еще одна переменная. - Но я не уверен, решит ли это вашу проблему. Можете ли вы попробовать просто поместить статический текст, например «Приемник подарка», между тегами метки вместо %s. Просто посмотреть, показывают ли это. Мне все еще интересно, почему нет текстовой области, у вас есть это в коде... - person rank; 18.05.2020
comment
Я добавил статический текст в теги меток. Теперь строка дублируется, и на вкладке перевода строк Polylang я уже не смог найти строку. ibb.co/MBgYH8K ibb.co/hyFthyr - person Jerry Tan; 18.05.2020
comment
Хорошо выглядит лучше. Так что это работает, но pll_e создает проблемы. Пожалуйста, возьмите это `$cart_label_string = pll_e('Gift Receiver:'); ` вне вашей функции и вставьте перед функцией. Затем внутри вашей функции в строке, где вы только что поместили код снаружи, вы вставляете `global $cart_label_string; ` Затем вставьте имя переменной, как я сделал в своем ответе, используя %s и добавив имя переменной в файл printf. Мы займемся этим ;). ваш текст расположен правильно. - person rank; 18.05.2020
comment
чтобы объяснить: я думаю, что pll_e выводит напрямую. Таким образом, вы получаете дубликат, потому что это первый pll_e, где вы сохраняете его значение. Это потому, что мы помещаем его в переменную вне функции, а затем получаем значение с глобальным значением внутри функции. - person rank; 18.05.2020
comment
Я уже говорил вам об этом, но вы, кажется, не замечаете ;) . Вы не даете строку в своем printf. Еще раз внимательно посмотрите на мой ответ. Вы просто добавляете $cart_item_key, $cart_item_key, $greceiver, но вы должны поместить переменную $gift_label_string перед... пожалуйста, внимательно прочитайте мой ответ еще раз. - person rank; 20.05.2020

Я нашел решение для добавления (br).

function gift_sender( $cart_item, $cart_item_key ) {
    $gsender = isset( $cart_item['gsender'] ) ? $cart_item['gsender'] : '';
    echo '<br/><br/><div><label>';
    pll_e('Gift Receiver:');
    echo '</label>';
    printf(
    '<textarea class="%s" id="cart_notes_%s" data-cart-id="%s">%s</textarea>',
    'prefix-cart-notes',
    $cart_item_key,
    $cart_item_key,
    $gsender
    );
    echo '</div>';
 }
add_action( 'woocommerce_after_cart_item_name', 'gift_sender', 10, 2 );

function gift_receiver( $cart_item, $cart_item_key ) {
    $greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
    echo '<div><label>';
    pll_e('Contact No:');
    echo '</label>'; 
    printf(
    '<textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea>',
    'prefix-cart-notes',
    $cart_item_key,
    $cart_item_key,
    $greceiver
    );
    echo '</div>';
 }

add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );
person Jerry Tan    schedule 18.05.2020