在OpenCart中显示Wordpress菜单


Display Wordpress Menu in OpenCart

我想在OpenCart Header中显示一个Wordpress菜单。在test.php页面中,我添加了以下代码;

<?php
require($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-load.php');  
wp_nav_menu( array( 'menu' => 'Test' ) ); ?>

它工作得很好,但是当我把它添加到标题中。我收到一个错误;

Fatal error: Call to a member function get_queried_object() on a non-object in /....../wordpress/wp-includes/nav-menu-template.php on line 256

你能帮忙吗?你以前这样做过吗?似乎是OpenCart造成了这个问题?

追加进度更新

好的,我已经运行了默认安装的OC和WP。

Wordpress在根目录- www.test.localOpencart位于根/存储目录- www.test.local/store/

在openart默认模板头中我有以下代码:

<?php $path = $_SERVER['DOCUMENT_ROOT'].'/wp-load.php';
      echo $path;
      require_once($path);  
      wp_nav_menu( array( 'menu' => 'Test' ) ); ?>

生成以下错误:

test.local/Sites/test.local/htdocs/wp-load.phpNotice: Constant DB_PASSWORD already defined in test.local/Sites/test.local/htdocs/wp-config.php on line 25Unknown: Redefining already defined constructor for class WP_Widget in test.local/Sites/test.local/htdocs/wp-includes/widgets.php on line 93Warning: strpos() expects parameter 1 to be string, array given in test.local/Sites/test.local/htdocs/wp-includes/functions.php on line 3048
Fatal error: Call to a member function get_queried_object() on a non-object in test.local/Sites/test.local/htdocs/wp-includes/nav-menu-template.php on line 256

有趣的是,当我从Wordpress中删除"测试"菜单时,菜单显示在Opencart中,但是我仍然看到以下错误:

/Sites/test.local/htdocs/wp-load.phpNotice: Constant DB_PASSWORD already defined in /Sites/test.local/htdocs/wp-config.php on line 25Unknown: Redefining already defined constructor for class WP_Widget in /Sites/test.local/htdocs/wp-includes/widgets.php on line 93Warning: strpos() expects parameter 1 to be string, array given in /Sites/test.local/htdocs/wp-includes/functions.php on line 3048Notice: Trying to get property of non-object in /Sites/test.local/htdocs/wp-includes/post-template.php on line 845

线索?有人有什么想法吗?

我认为您需要包含wp-blog-header.php而不是wp-load,看看这个http://www.problogdesign.com/wordpress/use-wordpress-as-a-php-framework-for-your-static-html-pages/

抛出"Constant DB_PASSWORD already defined",因为WP和OC使用相同的数据库密码定义变量。您需要将OC的DB_PASSWORD变量名更改为DB_PASSWORD_OC,然后在index.php中更改以下内容:

//数据库

$db = new db (DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);…

符合新的变量名:

//数据库

$db = new db (DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD_OC, DB_DATABASE);