Я создаю несколько собственных страниц моей учетной записи Woocommerce. Все идет отлично, и я сталкиваюсь с крошечным кусочком кода, через который не могу пройти.
Моя цель — просто добавить интервал между выходными данными $address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', ...
В настоящее время он населяет <br>
(даже не <br />
) теги между значениями поля. Я действительно хочу иметь возможность заменить <br>
теги с <p>
теги. Вот и все. Было бы хорошо, если бы я мог понять, как добавить между ними все, что хотел, но это не так важно.
Итак, вот кусочки:
<address>
<?php
$address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
'first_name' => get_user_meta( $customer_id, $name . '_first_name', true ),
'last_name' => get_user_meta( $customer_id, $name . '_last_name', true ),
'company' => get_user_meta( $customer_id, $name . '_company', true ),
'address_1' => get_user_meta( $customer_id, $name . '_address_1', true ),
'address_2' => get_user_meta( $customer_id, $name . '_address_2', true ),
'city' => get_user_meta( $customer_id, $name . '_city', true ),
'state' => get_user_meta( $customer_id, $name . '_state', true ),
'postcode' => get_user_meta( $customer_id, $name . '_postcode', true ),
'country' => get_user_meta( $customer_id, $name . '_country', true )
), $customer_id, $name );
$formatted_address = WC()->countries->get_formatted_address( $address );
if ( ! $formatted_address )
_e( 'You have not set up this type of address yet.', 'woocommerce' );
else
echo $formatted_address;
?>
</address>
Это затем выводит следующее:
<address>
John Doe<br>John's Company<br>35 John Street<br>Johnsville, JD 55555
</address>
Кто-нибудь со мной? Я новичок в PHP, так что если это действительно просто, то потерпите меня. Я просто нигде не нашел решения по этому поводу. Обычно я могу пройтись по таким вещам.
Я знаю, что это немного устарело, но у меня была точно такая же проблема, и мне удалось решить ее, поиграв с регулярным выражением, которое ищет preg_match ().
Все, что я сделал, это изменил $pattern
переменная и обернуть $output
в <p></p>
теги. Окончательный код:
$address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
'first_name' => get_user_meta( $customer_id, $name . '_first_name', true ),
'last_name' => get_user_meta( $customer_id, $name . '_last_name', true ),
'company' => get_user_meta( $customer_id, $name . '_company', true ),
'address_1' => get_user_meta( $customer_id, $name . '_address_1', true ),
'address_2' => get_user_meta( $customer_id, $name . '_address_2', true ),
'city' => get_user_meta( $customer_id, $name . '_city', true ),
'state' => get_user_meta( $customer_id, $name . '_state', true ),
'postcode' => get_user_meta( $customer_id, $name . '_postcode', true ),
'country' => get_user_meta( $customer_id, $name . '_country', true )
), $customer_id, $name );
$formatted_address = WC()->countries->get_formatted_address( $address );
if ( ! $formatted_address )
_e( 'You have not set up this type of address yet.', 'woocommerce' );
else
$pattern = "/<br\/>/";
$replacements= '<p>';
$formatted_address = WC()->countries->get_formatted_address( $address );
$output = preg_replace($pattern, $replacements, $formatted_address);
echo "<p>" . $output . "</p>";
Если это то, что вы хотите
<address>
John Doe,John's Company,35 John Street,Johnsville, JD 55555
</address>
тогда попробуйте это:
<address>
<?php
$address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
'first_name' => get_user_meta( $customer_id, $name . '_first_name', true ),
'last_name' => get_user_meta( $customer_id, $name . '_last_name', true ),
'company' => get_user_meta( $customer_id, $name . '_company', true ),
'address_1' => get_user_meta( $customer_id, $name . '_address_1', true ),
'address_2' => get_user_meta( $customer_id, $name . '_address_2', true ),
'city' => get_user_meta( $customer_id, $name . '_city', true ),
'state' => get_user_meta( $customer_id, $name . '_state', true ),
'postcode' => get_user_meta( $customer_id, $name . '_postcode', true ),
'country' => get_user_meta( $customer_id, $name . '_country', true )
), $customer_id, $name );
$formatted_address = WC()->countries->get_formatted_address( $address );
if ( ! $formatted_address )
_e( 'You have not set up this type of address yet.', 'woocommerce' );
else
$pattern = '/<br>/';
$replacements= ',';
$formatted_address = WC()->countries->get_formatted_address( $address );
$output = preg_replace($pattern, $replacements, $formatted_address);
echo $output;
?>
</address>