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

时间:2017-01-09 08:21:16

标签: php wordpress function hreflang

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

由于我没有编写代码或原始网站,我希望得到一些支持,如何修补代码以使其工作或找到替代代码来创建相同的工作而不会导致问题。

我已经注释了暂时允许网站运行的代码。我只是希望有人知道答案。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

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