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

时间:2017-11-02 02:52:41

标签: php wordpress

我有这个代码并且$ var1到达我的函数空了我不知道为什么,我已经测试了在函数内声明变量并且它确实有效但当我尝试在函数外声明它并将其作为一个传递参数与do_action不起作用,对此有何见解?感谢

add_shortcode工作正常

$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 个答案:

答案 0 :(得分:0)

你不能do_action('wp_enqueue_scripts');它的wordpress内置动作。

请查看下面的代码段。

<?php 
function shorcode_resources() {

    $var1 = "link";

    global $post;
    $shortcode_found = false;

    if (has_shortcode($post->post_content, $var1)) {
        wp_enqueue_style('core', ABS_URL . '/shortcode/css/flipbox.css', false);
        wp_enqueue_script('my-js', ABS_URL . '/shortcode/js/flipbox(' . $var1 . ').js', false);
    }    

}

$name = "link";
add_shortcode($name, 'aa_link_shortcode');
add_action('wp_enqueue_scripts', 'shorcode_resources', 10);

答案 1 :(得分:0)

Malay Solanki是对的,你不应该在这种情况下使用do_action。您需要将$var1范围放入PHP函数中。 (这当然是假设在此函数之前在脚本中的某处声明$var1 ...由于您没有为上下文提供足够的代码,因此很难给出确切的答案)

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

    function shorcode_resources() {
       global $post,$var1;
       $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 );
       }

    }

add_action( 'wp_enqueue_scripts', 'shorcode_resources' );