1

Wordpress は、拡張性のためにフックとアクションを使用します。プラグインは次のようになります。

class myLightbox
{
    function __construct()
    {
        add_action('wp_footer',array($this,'my_footer'));
    }

    function my_footer()
    {
        echo '<script src="http://external-site.com/lightbox.js" ></script>';
    }
}

add_actionそのコードをWordpressの外で実行する場合、関数をすぐに呼び出すだけでも、動作したいと思います。

私はこれらを読みました:

2 番目のものは、私がやりたいことにかなり近いですが、クラスの一部である関数を操作するように設計されているとは思いません。

使用してみcall_user_functionましたが、どのように物を与えるかわかりませんarray($this,'my_footer')

function add_action($whenToCall,$contextAndFunction=array())
{
    call_user_func($contextAndFunction);
}

私もこれを試しましたが、私のOOPが良くないことがわかるように、私は苦労しています:

function add_action($whenToCall,$contextAndFunction=array())
{
    $function = array_pop($contextAndFunction);
    $context = array_pop($contextAndFunction);

    $context->$function();

}

minitechさんの提案を使用したテストに失敗しました:

class myLightbox
{
    function __construct()
    {
        add_action('wp_footer',array($this,'my_footer'));
    }

    function my_footer()
    {
        echo '<script src="http://external-site.com/lightbox.js" ></script>';
    }
}


function add_action($whenToCall,$contextAndFunction=array())
{
    $contextAndFunction();
}


$myLightbox = new myLightbox();

プロデュース:

Fatal error: Function name must be a string
4

1 に答える 1

1

PHP 5.4 を使用している場合は、既に callable になっています。

$contextAndFunction();

これがデモです。

それ以外の場合は、call_user_funcそのまま動作します。

call_user_func($contextAndFunction);

そしてデモがあります。

于 2012-07-28T23:17:53.473 に答える