Wordpress 显示 PHP 代码而不是菜单内容

Wordpress shows PHP code instead of menu content

将 WordPress 从本地环境移动到实时服务器后,我遇到了一个奇怪的菜单问题。

在我的本地服务器上,菜单显示正确,而在实时服务器上,只显示了一段菜单代码,而不是实际的菜单。 (基本上,它会截断数组第一个参数中 => 之后的代码,并输出其余代码而不是显示菜单。)


本地服务器版本


在线服务器版本


其他一切正常 - 后端正常,所有链接也正常工作,这让我认为迁移顺利,问题出在 PHP 本身。

header.php 中菜单的完整代码如下所示(有两个相邻的菜单):

<div class="collapse navbar-collapse" id="main-navigation-collapse">
    <? wp_nav_menu (array(
        'sort_column' => 'menu_order',
        'menu_class' => 'nav navbar-nav list-inline',
        'theme_location' => 'primary'
    )); ?>
    <? wp_nav_menu (array(
        'sort_column' => 'menu_order',
        'menu_class' => 'nav navbar-nav navbar-right list-inline',
        'theme_location' => 'top-menu'
    )); ?>
</div>

菜单在 functions.php 中注册如下:

register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'be-emobil' ),
    'top-menu' => __('Top Menu', 'be-emobil'),
    'footer-menu' => __('Footer Menu', 'be-emobil'),
    'footer-menu-2' => __('Footer Menu 2', 'be-emobil')
) );

一些可能有用的信息:

知道为什么会发生这种情况,或者我如何找出问题所在?

尝试启用短标签?

添加

short_open_tag=On

到您的 php.ini 并重新启动 php-fpm 和您的网络服务器。

您的实时服务器未启用 Short Tags

您可以执行以下操作:

  • 更改
  • 在 php.ini
  • 中启用短标签
  • 在您的 .htaccess 文件中启用短标签
  • 使用php ini_set在文件中启用短标签

根据您在实时服务器上对 php.ini、.htaccess 等的访问权限,您需要相应地选择您的解决方案

将您的 Shorttags <? 替换为 <?php 它们并不适用于所有环境。 或者尝试在 php.ini 中打开它们(如果您有权访问它)。