wordpress — Проблемы с функцией hreflang php на многоязычном сайте

Один из моих клиентов попросил меня выяснить, почему на их веб-сайте WordPress возникают проблемы с загрузкой.
Их сайт был создан другим разработчиком и больше не ведет дела с моим клиентом, поэтому проблема в том, чтобы обратиться к ним за помощью.

Когда я изучал причину, я обнаружил следующую ошибку PHP:

[09-Jan-2017 04:09:52 UTC] PHP Fatal error: Can't use function return value in write context in /home/*********/public_html/fr/wp-content/themes/********/functions.php on line 121

Просматривая файл functions.php, я нашел следующий код:

function bs_get_hreflang_tags() {
ob_start();
if( !empty( get_field('australia', get_the_ID() ) ) ) : ?>
<link rel="alternate" href="<?php echo esc_url( get_field('australia', get_the_ID() ) ); ?>" hreflang="en-au" />
<?php endif;
if( !empty( get_field('france', get_the_ID() ) ) ) : ?>
<link rel="alternate" href="<?php echo esc_url( get_field('france', get_the_ID() ) ); ?>" hreflang="fr"/>
<?php endif;
if( !empty( get_field('spain', get_the_ID() ) ) ) : ?>
<link rel="alternate" href="<?php echo esc_url( get_field('spain', get_the_ID() ) ); ?>" hreflang="es" />
<?php endif;
if( !empty( get_field('italy', get_the_ID() ) ) ) : ?>
<link rel="alternate" href="<?php echo esc_url( get_field('italy', get_the_ID() ) ); ?>" hreflang="it" />
<?php endif;

$output = ob_get_contents();
ob_end_clean();

return $output;
}

РЕДАКТИРОВАТЬ: строка 121 if( !empty( get_field('australia', get_the_ID() ) ) ) : ?>

Я не до конца понимаю, что делает этот код, но считаю, что он в основном связан с многоязычной поддержкой SEO.

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

Я закомментировал код на данный момент, чтобы сайт мог работать. Я просто надеялся, что кто-то может знать ответ на этот вопрос.

Любая помощь будет оценена

0

Решение

Обь конструирование излишне сложно ..
Попробуйте заменить это этим.

function bs_get_hreflang_tags() {
$output= '';
if( get_field('australia', get_the_ID() ) ) :
$output = '<link rel="alternate" href="'.esc_url( get_field('australia', get_the_ID() ) ) . '" hreflang="en-au" />';
elseif( get_field('france', get_the_ID() ) ) :
$output = '<link rel="alternate" href="'.esc_url( get_field('france', get_the_ID() ) ) . '" hreflang="fr" />';
elseif( get_field('spain', get_the_ID() ) ) :
$output = '<link rel="alternate" href="'.esc_url( get_field('spain', get_the_ID() ) ) . '" hreflang="es" />';
elseif( get_field('italy', get_the_ID() ) ) :
$output = '<link rel="alternate" href="'.esc_url( get_field('italy', get_the_ID() ) ) . '" hreflang="it" />';
endif;

return $output;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]