WordPress的 - 如何包括()一个文件,在另一个目录
我正在写一个插件,将利用其他插件的功能(考虑插件插件)。WordPress的 - 如何包括()一个文件,在另一个目录
我的文件位于/plugins/new-plugin/new-plugin.php
,我需要做一个 include(/plugins/OLD_plugin/old-plugin.php)
,所以我可以用一对夫妇的功能,从旧plugin.php文件。
这样做的正确方法是什么?我可以使全局可用的old-plugin.php中的函数可用,但我不想更改old-plugin.php文件。
我已经尝试了几种方法来做到这一点,但都没有奏效。新插件只会显示选项页面中的一些信息,不可供普通公众查看,也不会与我的网站中的任何公共页面或帖子进行交互。
我已经尝试过$ _SERVER,WP_PLUGIN_DIR,WP_CONTENT_DIR,绝对服务器路径,相对路径,甚至有些黑魔法,但似乎没有什么效果。
有了这些解决方案,插件的选项页面显示效果很好,但博客的页面不显示。与其他解决方案相反,并与其他一些解决方案甚至没有呈现,无论是管理页面或博客的网页,所有与错误有关的文件未找到。
的新plugin.php很简单,只要
<?php
/*
WP Common Headers
*/
global $wpdb;
if (! defined('WP_CONTENT_DIR'))
define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
if (! defined('WP_PLUGIN_DIR'))
define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins');
include '/server-absolute-path/public_html/gameblogs/wp-content/plugins/old-plugin/old-plugin.php';
add_action('admin_menu', 'new_plugin_menu');
function new_plugin_menu() {
$page_title = 'New Plugin';
$menu_title = 'New Plugin';
$function = 'new_plugin_admin_page';
$menu_slug = 'new_plugin';
add_menu_page($page_title, $menu_title, 0, __FILE__, $function);
}
function new_plugin_admin_page() {
$result = old_plugin_link_data(" WHERE link_destination NOT LIKE '/%' AND link_destination NOT LIKE '%gameblogs%'");
$total = count($result);
old_plugin_list_links($result, $total, FALSE, FALSE);
*/
}
?>
感谢任何想法!
检查旧的插件文件,看看里面是否有do_actions
或apply_filters
。如果有的话,你可以使用你的新插件使用add_action
和apply_filters
钩入旧的插件脚本,并执行你想要做的其他事情。
看到http://codex.wordpress.org/Function_Reference/do_action 和http://codex.wordpress.org/Function_Reference/apply_filters
例如(非常基本的例子):
如果在旧插件,你找到一个:do_action('some_type_of_reference
);`
在新的插件,你可以挂钩通过这样做:
`add_action('some_type_of_reference','name_of_my_function');
功能name_of_my_function(){// 执行代码在这里 }`
如果在旧插件,你找到一个:apply_filters('some_type_of_reference', $variable);
然后在新的插件,你可以通过做勾入过滤器:apply_filter('some_type_of_reference', 'my_function');
function my_function($variable) {
//act on the variable from the filter.
return $variable;
}
你看过plugins_url
函数吗?我没有深入地阅读你的代码,但它可能有帮助。
plugins_url模板标签检索到插件目录或该目录中特定文件的url。您可以将插件slug硬编码到$ path中,或通过FILE作为第二个参数来获取正确的文件夹名称。
希望这有助于!
感谢您的回答,但不是,旧插件中没有apply_filter或do_action。有一些'add_filter',但我认为它们不是一回事,对吗?任何其他想法? – Daniel 2011-03-29 02:45:34