使用do_action和add_action将参数传递给我的函数不起作用

时间:2017-11-02 作者:Johanna Ferreira

我有这段代码,$var1到达我的函数时是空的,我不知道为什么,我已经测试过在函数内声明变量,它确实有效,但是当我尝试在函数外声明它并将其作为参数传递给do\\u操作时,它不起作用,对此有什么见解吗?谢谢

add\\u短代码工作正常

$name="link";   
    add_shortcode($name, \'aa_link_shortcode\' );

    function shorcode_resources($var1) {
        global $post;
       $shortcode_found = false;

       if ( has_shortcode($post->post_content, $var1) ) {
          $shortcode_found = true;
       } 

       if ( $shortcode_found ) {
        wp_enqueue_style( \'core\', ABS_URL . \'/shortcode/css/flipbox.css\' , false ); 
        wp_enqueue_script( \'my-js\',ABS_URL . \'/shortcode/js/flipbox(\'.$var1.\').js\', false );
       }

}

do_action( \'wp_enqueue_scripts\', $name);    
add_action( \'wp_enqueue_scripts\', \'shorcode_resources\', 10, 1 );

2 个回复
最合适的回答,由SO网友:David Lee 整理而成

你正在做do_action 在添加操作之前,请尝试将其移动:

$name = "link";
add_shortcode($name, \'aa_link_shortcode\');

function shorcode_resources($var1) {
    global $post;
    $shortcode_found = false;

    if (has_shortcode($post->post_content, $var1)) {
        $shortcode_found = true;
    }

    if ($shortcode_found) {
        wp_enqueue_style(\'core\', ABS_URL . \'/shortcode/css/flipbox.css\', false);
        wp_enqueue_script(\'my-js\', ABS_URL . \'/shortcode/js/flipbox(\' . $var1 . \').js\', false);
    }
}

//first we add the action
add_action(\'wp_enqueue_scripts\', \'shorcode_resources\', 10, 1);
//then we do the action
do_action(\'wp_enqueue_scripts\', $name);
还要记住wp_enqueue_scripts 这是WP也会触发的动作

SO网友:Erica

我并不确定这段代码的意图,但问题很可能是您正在尝试更改内置挂钩。wp_enqueue_scripts 是不接受任何参数的实际WordPress挂钩。即使您声明您通过了一个,当WP运行其wp_enqueue_scripts 胡克,它会忽略它的。也许可以尝试改用全局变量。

$shortcode_name="link";   
add_shortcode($shortcode_name, \'aa_link_shortcode\' );

function shorcode_resources() {
   global $post, $shortcode_name;
   $shortcode_found = false;

   if ( has_shortcode($post->post_content, $shortcode_name) ) {
      $shortcode_found = true;
   } 

   if ( $shortcode_found ) {
    wp_enqueue_style( \'core\', ABS_URL . \'/shortcode/css/flipbox.css\' , false ); 
    wp_enqueue_script( \'my-js\',ABS_URL . \'/shortcode/js/flipbox(\'.$shortcode_name.\').js\', false );
   }
}

add_action( \'wp_enqueue_scripts\', \'shorcode_resources\', 10 ); 

结束

相关推荐

使用Functions.php的出列脚本

您好,我正在尝试将在我的队列中找到的脚本“jquery.favorite.js”退出队列。php:// WP_ENQUEUE_SCRIPTS static function wp_enqueue_scripts_callback() { global $javo_tso; $javo_register_scripts = Array( \'oms.min.js\'