我从WP的另一个开发人员那里获得了部分完成的插件,该插件将基于Codeigniter的Easy!Appointments调度实用程序集成到WP数据库中。我需要将Easy!Appointments用户与WP用户相关联。
STRUCTURE:Easy!Appointments数据库是mysql中WP数据库结构的一部分。简单!约会是在Codeigniter框架中构建的。该插件将让Easy!Appointments在一个包含短代码的页面上运行,但缺少WP头文件。所以,我在WP页面的iframe中运行它。插件的主要部分是:
<?php
/**
* Plugin Name: Easy!Appointments - WordPress Plugin
* Plugin URI: http://easyappointments.org
* Description: Creates a bridge between Easy!Appointments and WordPress.
* Version: 1.0.0
* Author: A.Tselegidis
* Author URI: http://alextselegidis.com
* Text Domain: eawp
* License: GPLv3
*/
/** Base Plugin Path */
define('EAWP_BASEPATH', __DIR__);
/** Supported Versions */
define('EAWP_MIN_VERSION', '1.0');
define('EAWP_MAX_VERSION', '1.0');
/** Setup Autoloader */
require EAWP_BASEPATH . '/core/Autoload.php';
$loader = new EAWP\Core\Autoload;
$loader->register();
$loader->addNamespace('EAWP\Core', EAWP_BASEPATH . '/core');
$loader->addNamespace('EAWP\Core\Interfaces', EAWP_BASEPATH . '/core/interfaces');
$loader->addNamespace('EAWP\Core\Exceptions', EAWP_BASEPATH . '/core/exceptions');
$loader->addNamespace('EAWP\Core\ValueObjects', EAWP_BASEPATH . '/core/value-objects');
$loader->addNamespace('EAWP\Libraries', EAWP_BASEPATH . '/libraries');
/** Initialize Plugin */
global $wpdb;
$route = new EAWP\Core\Route();
$plugin = new EAWP\Core\Plugin($wpdb, $route);
$plugin->initialize();
我想将当前用户的ID传递给Easy!约会。在插件中我添加了这段代码:
if(!function_exists('wp_get_current_user')) {
include(ABSPATH . "wp-includes/pluggable.php");
}
$wp_id = get_current_user_id();
这告诉我当前的用户。这就是我需要的。现在我如何将其传递给codeigniter / Easy!约会可以在我的控制器中使用它吗?
我尝试过: 在我的codeigniter控制器中,我添加了 require_once(“/ path to wp / wp-includes / user.php”); 然后 $ wp_id = get_current_user_id();
然后告诉我我没有登录。
我也尝试过添加到控制器中 require_once(“/ path to wp / wp-includes / pluggable.php”);
而这只会杀死它。
那么,如何制作这些WP函数或至少我的codeigniter控制器可用的函数结果。我只是把它变成全球性的吗?怎么样?
答案 0 :(得分:1)
问题是我试图在iFrame中运行,而不是在WP中用短代码运行。我用这里给出的建议解决了短代码的问题: How to integrate WordPress template with CodeIgniter
现在一切正常。