Сохранение woocommerce_page_title в переменной и отображение его в Woocommerce

Я хотел бы отобразить заголовок страницы над изображением категории. Я скопировал этот код

<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

из "template-archive-product.php" в "woocommerce-hook.php" следующим образом:

$html .= '<h1 class="page-title">'<?php woocommerce_page_title(); ?>'</h1>';

Теперь заголовок не появляется. Когда я проверяю инструменты разработки, заголовок похож на html-комментарий.

<h1 class="page-title"><!--?php woocommerce_page_title(); ?--></h1>

Было бы здорово, если бы кто-то мог мне помочь.

2 ответа

Решение

Функция шаблона woocommerce_page_title() выводится по умолчанию, как вы можете видеть в его исходном коде... Но есть необязательный аргумент, который будет использоваться для возврата данных вместо их отображения. Для этого вам нужно отключить этот аргумент (по умолчанию) true в false,

Это полезно, когда вам нужно установить эти данные в переменной, как вы пытаетесь это сделать. Таким образом, функциональный код должен быть немного другим:

$html .= '<h1 class="page-title">' . woocommerce_page_title( false ); . '</h1>';

Проверено и работает.

Или же вы можете использовать функции буферизации php, чтобы получить то же самое, вот так:

ob_start();
?>
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
<?php
$html .= ob_get_clean();

Ничего не будет выведено, и данные будут добавлены в $html переменная.

Попробуйте этот код:

$html .= '<h1 class="page-title">' . woocommerce_page_title() .'</h1>';

Вместо:

$html .= '<h1 class="page-title">'<?php woocommerce_page_title(); ?>'</h1>';
Другие вопросы по тегам