多语言网站上的 hreflang php 功能问题

Issues with hreflang php function on a multilingual site

我的一位客户要求我解决他们的 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 支持有关。

因为我没有编写代码或原始网站,所以我希望得到一些支持,了解如何修补代码以使其正常工作或找到替代代码来创建相同的工作而不会引起问题。

为了让本站运行暂时把代码注释掉了。我只是希望有人知道这个问题的答案。

如有任何帮助,我们将不胜感激

ob 构造不必要地复杂.. 尝试用这个替换它。

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;
}