我正在尝试在自定义php文件中使用插件函数。将此代码粘贴到文件顶部,我可以使用wordpress的所有功能:
<?php
$file = dirname(__FILE__);
$file = substr($file, 0, stripos($file, "wp-content") );
require( $file .\'/wp-blog-header.php\');
但我在调用插件函数时遇到了这个错误:
Fatal error: Call to undefined function wp_bannerize() in mysite/my-file.php
如何在我的文件中获取wp\\u bannize()。php?
更新时间:
如果我调用我的文件。我的浏览器中的php如下:
http://localhost/~sdibenedetto/d-art/htdocs/wp-content/themes/d-art/infinite-posts.php?offset=3
我没有错误
wp_bannerize()
工作正常
在AJAX调用中,我发现了错误。。。可能取决于无限滚动jquery插件使用的load()
相反$.ajax()
?
SO网友:Justin Bell
如果您打算从常规WP工作流之外调用Wordpress功能,可以在代码中插入以下两行:
define("WP_USE_THEMES", false);
require_once("../../../wp-blog-header.php");
当然,以上假设我是从根主题或插件文件夹(
../
表示反向文件夹遍历)。看起来你已经包括了
wp-blog-header.php
, 定义是指Wordpress不要调用与正常页面/帖子查询相关的某些功能。关于如何在完全不同的PHP代码库中实现Wordpress功能的示例,我建议您看看
Laravel+Wordpress 从Wordpress自身外部发布或类似尝试利用Wordpress功能。如果您需要Wordpress提供的功能(包括其激活的插件),这可能是最好的解决方案。
否则,根据您的场景,按照其他用户的建议,将Wordpress代码作为Ajax调用可能是合适的选择。特别是,如果您想要实现一个简单的CRUD API,比如RESTful操作,那么这就是建议的路线。如果您感兴趣的只是从A点和B点移动数据,那么我个人会推荐这条路线。
您的代码可能已失败,因为您没有定义WP_USE_THEMES
正确标记;在正常情况下,插件提供的功能在某一点之后才可用(可能是init
行动,基于http://codex.wordpress.org/Plugin_API/Action_Reference), 而在该操作发生之前尝试调用插件功能可能会导致您所描述的结果。
SO网友:Sergey Beresnev
萨尔瓦多!您可以手动编辑wp\\u bannize(请参阅文件plugins/wp bannize/main.php),如下所示:
require_once( trailingslashit( dirname( __FILE__ ) ) . \'main.h.php\' );
require_once( trailingslashit( dirname( __FILE__ ) ).\'Classes/wpBannerizeClass.php\' );
if ( @isset( $_SERVER[\'HTTP_X_REQUESTED_WITH\'] ) ) {
if ( is_admin() ) {
require_once( trailingslashit( dirname( __FILE__) ) . \'Classes/wpBannerizeAdmin.php\' );
$wpBannerizeAdmin = new WPBannerizeAdmin( __FILE__ );
require_once( trailingslashit( dirname( __FILE__) ) . \'Classes/wpBannerizeAjax.php\' );
}else{
require_once( trailingslashit( dirname( __FILE__ ) ) . \'Classes/wpBannerizeFrontend.php\' );
$wpBannerizeFrontend = new WPBannerizeFrontend( __FILE__ );
require_once( trailingslashit( dirname( __FILE__ ) ) . \'Classes/wpBannerizeFunctions.php\' );
}
}
else {
if ( is_admin() ) {
require_once( trailingslashit( dirname( __FILE__ ) ) . \'Classes/wpBannerizeAdmin.php\' );
//
$wpBannerizeAdmin = new WPBannerizeAdmin( __FILE__ );
$wpBannerizeAdmin->register_plugin_settings( __FILE__ );
register_activation_hook( __FILE__, array( &$wpBannerizeAdmin, \'pluginDidActive\' ) );
register_activation_hook( __FILE__, array( &$wpBannerizeAdmin, \'pluginDidDeactive\' ) );
}
else {
require_once( trailingslashit( dirname( __FILE__ ) ) . \'Classes/wpBannerizeFrontend.php\' );
$wpBannerizeFrontend = new WPBannerizeFrontend( __FILE__ );
require_once( trailingslashit( dirname( __FILE__ ) ) . \'Classes/wpBannerizeFunctions.php\' );
}
}
这肯定会有帮助。它不能正常工作的主要原因是第4行的情况(检查ajax请求)。