使用多个文件在WordPress插件 - 调用未定义功能ADD_ACTION()(use multi

2019-08-02 15:14发布

我试着写多文件的插件,我敢肯定,我以前做过没有问题,但现在我有这个问题的问题。

在主插件文件我包括文件名 - YDP-includes.php,YDP-includes.php我包括了所有我想是这样的文件中:

<?php
include(dirname( __FILE__ ) .'/1.php');
include(dirname( __FILE__ ) .'/2.php');
include(dirname( __FILE__ ) .'/3.php');
include(dirname( __FILE__ ) .'/4.php');
?>

但我得到:致命错误:调用未定义功能ADD_ACTION()是包括但对于原因,我不能在目前的wordpress看不把他们看成一个插件包,并且每个WordPress的功能里面忽略的文件。

有另一种最佳实践的方式来开发多个文件WordPress插件? 我在做什么错?

谢谢

Answer 1:

在PHP中include一个语句不是一个函数 。

所以它应该是

<?php
include dirname( __FILE__ ) .'/1.php';
include dirname( __FILE__ ) .'/2.php';
include dirname( __FILE__ ) .'/3.php';
include dirname( __FILE__ ) .'/4.php';
?>

或者是完美的

<?php
require_once dirname( __FILE__ ) .'/1.php';
require_once dirname( __FILE__ ) .'/2.php';
require_once dirname( __FILE__ ) .'/3.php';
require_once dirname( __FILE__ ) .'/4.php';
?>


Answer 2:

基于错误信息,这听起来像你想直接访问插件文件,这是不正确。 WordPress的使用前端控制器设计模式,这意味着你会希望有你的文件是这样的:

my-plugin-folder/my-plugin-name.php
my-plugin-folder/includes/ydp-includes.php
my-plugin-folder/includes/ydp-database.php

里面的我的插件 - name.php的:

//Get the absolute path of the directory that contains the file, with trailing slash.
define('MY_PLUGIN_PATH', plugin_dir_path(__FILE__)); 
//This is important, otherwise we'll get the path of a subdirectory
require_once MY_PLUGIN_PATH . 'includes/ydb-includes.php';
require_once MY_PLUGIN_PATH . 'includes/ydb-database.php';
//Now it's time time hook into the WordPress API ;-)
add_action('admin_menu', function () {
  add_management_page('My plugin Title', 'Menu Title', 'edit_others_posts', 'my_menu_slug', 'my_plugin_menu_page_content'
});
//Php 5.3+ Required for anonymous functions. If using 5.2, create a named function or class method

function my_plugin_menu_page_content () {
    //Page content here
}

这将增加一个WordPress管理菜单项,并加载所需的文件。 您也可以要求包含文件的内多个文件现在,使用常量MY_PLUGIN_PATH

也可以看看:

add_menu_page plugin_dir_path ()



Answer 3:

使用plugin_dir_path( __FILE__ ); 让你的插件文件。 使用下面的代码参考:

$dir = plugin_dir_path( __FILE__ );

require_once($dir.'1.php');

require_once($dir.'2.php');

require_once($dir.'3.php');

require_once($dir.'4.php');


文章来源: use multiple files in wordpress plugin - Call to undefined function add_action()