簡體   English   中英

在wordpress插件中使用多個文件 - 調用未定義的函數add_action()

[英]use multiple files in wordpress plugin - Call to undefined function add_action()

我正在嘗試編寫一個包含多個文件的插件,我確信我之前沒有遇到任何問題,但現在我遇到了問題。

在主插件文件中我包含了一個文件名 - 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插件的最佳實踐方法嗎? 我做錯了什么?

謝謝

在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';
?>

基於錯誤消息,聽起來你正試圖直接訪問插件文件,這是不正確的。 WordPress使用前端控制器設計模式,這意味着您將要擁有這樣的文件:

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

在my-plugin-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 ()

使用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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM