6

マルチファイルでプラグインを作成しようとしています。以前は問題なくやったと思いますが、今は件名に問題があります。

メインのプラグイン ファイルには、ファイル名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 はそれらを 1 つのプラグイン パッケージとして認識せず、内部の各 WordPress 関数は無視されます。

複数ファイルの WordPress プラグインを開発する別のベスト プラクティスの方法はありますか? 私は何を間違っていますか?

4

3 に答える 3

6

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';
?>
于 2012-11-12T13:57:07.600 に答える
4

エラー メッセージに基づいて、プラグイン ファイルに直接アクセスしようとしているようですが、これは正しくありません。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 ()

于 2014-04-10T23:52:28.027 に答える