0

他のプラグインの機能を利用するプラグインを作成しています (プラグインのプラグインについて考えてください)。

私のファイルは /plugins/new-plugin/new-plugin.php にあります

include(/plugins/OLD_plugin/old-plugin.php) そして、old-plugin.php ファイルからいくつかの関数を使用できるようにする必要があり ます。

これを行う正しい方法は何ですか?old-plugin.php の関数をグローバルに利用できるようにすることもできますが、old-plugin.php ファイルを変更したくありません。

これを行うためにすでにいくつかの方法を試しましたが、うまくいきませんでした。new-plugin は、オプション ページに一部の情報のみを表示し、一般の人には表示できず、私のサイトの公開ページや投稿とは対話しません。

私はすでに $_SERVER、WP_PLUGIN_DIR、WP_CONTENT_DIR、絶対サーバー パス、相対パス、さらにはいくつかの黒魔術を試しましたが、何もうまくいかないようです。

このソリューションのいくつかでは、プラグインのオプション ページは適切に表示されますが、ブログのページは表示されません。他のソリューションでは逆のことが起こり、他のソリューションでは、管理ページであろうとブログのページであろうと、何もレンダリングされず、すべてファイルが見つからないというエラーが発生します。

new-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);
    */
    }
?>

アイデアをありがとう!

4

2 に答える 2

0

古いプラグイン ファイルをチェックして、その中に または があるかどうかを確認して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);`

新しいプラグインでは、次のようにしてフックできます

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;

}

于 2011-03-26T23:01:30.040 に答える
0

plugins_url関数を見ましたか?あなたのコードを詳しく読んだことはありませんが、役立つかもしれません。

plugins_url テンプレート タグは、プラグイン ディレクトリまたはそのディレクトリ内の特定のファイルへの URL を取得します。$path にプラグイン スラッグをハードコーディングするか、2 番目の引数としてFILEを渡して、正しいフォルダー名を取得できます。

お役に立てれば!

于 2011-09-08T02:09:36.633 に答える