使用类方法的WordPress自定义挂钩

时间:2021-11-07 作者:deki0

下面描述的代码在wordpress之外正常工作,但在wordpress中我得到;警告要求参数1是有效的回调函数mycars($mycarsclass),未找到;。如果我删除$mycarsclass并只保留add\\u节点,它就会正常工作。如何使mycars($mycarsclass)的此设置有效?这在wordpress中可能吗?

<?php
class mycarsclass {
  public $car1;
  public $car2;
function add_node($args) {
    echo \'<div class="demo">I lake \' . $args[\'car1\'] . \'and\' . $args[\'car2\'] . \'</div>\';
}
}
$mycarsclass = new mycarsclass();

function mycars($mycarsclass){
     //$mycarsclass = new mycarsclass(); If I add directly to the function it works normally, if the output does not work
    $args = array(
    \'car1\' => \'Volvo\',  
    \'car2\' => \'Toyota\'
    ); 
    
    $mycarsclass->add_node($args);  
}

add_action(\'mycarsaction\',\'mycars($mycarsclass)\'); // \'mycars\' It must be without ($mycarsclass) if $mycarsclass = new mycarsclass (); in function mycars
do_action(\'mycarsaction\');
?>

1 个回复
SO网友:Petar Petrov

您可以将匿名函数与PHP的use 这样的陈述:

function mycars($mycarsclass){
     
    $args = array(
    \'car1\' => \'Volvo\',  
    \'car2\' => \'Toyota\'
    ); 
    
    $mycarsclass->add_node($args);  
}

add_action(\'mycarsaction\', function () use ($mycarsclass) {
    mycars($mycarsclass);
});
do_action(\'mycarsaction\');
或者声明一个单独的函数并传递:

function mycars($mycarsclass){
     
    $args = array(
        \'car1\' => \'Volvo\',  
        \'car2\' => \'Toyota\'
    ); 
    
    $mycarsclass->add_node($args);  
}

function mycars_mycarsclass() {
    $mycarsclass = new mycarsclass();
    mycars($mycarsclass);
}

add_action(\'mycarsaction\', \'mycars_mycarsclass\');
do_action(\'mycarsaction\');

相关推荐

在PHP函数中使用来自AJAX调用的值

我有一个ajax脚本,它将从onchange上的select from中获取一个值。这在控制台上运行良好。日志我可以看到正确的值。我的select表单会触发重新加载,在重新加载页面之前,我会在控制台中看到该值。我想使用此值为WPML设置后端语言,但不确定如何使用该值。PHPfunction my_action( ) { $dropdown_shop_order_language = $_POST[\'dropdown_shop_order_language\'];