web-dev-qa-db-fra.com

Passer des arguments à ma fonction avec do_action et add_action ne fonctionne pas

J'ai ce code et le $ var1 arrive vide à ma fonction je ne sais pas pourquoi, j'ai testé en déclarant la variable à l'intérieur de la fonction et ça marche mais quand j'essaye de le déclarer en dehors de la fonction et de le passer comme paramètre avec le do_action ça ne marche pas, des idées à ce sujet? Merci

Le add_shortcode fonctionne bien

$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 );
1
Johanna Ferreira

Vous faites le do_action avant que l'action soit ajoutée, essayez de la déplacer:

$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);

rappelez-vous également que wp_enqueue_scripts est une action que WP déclenchera aussi

2
David Lee

Je ne suis pas vraiment sûr de l'intention de ce code, mais il est plus que probable que le problème est que vous essayez de modifier un crochet intégré. wp_enqueue_scripts est un hook WordPress réel qui n’accepte aucun argument. Même si vous avez déclaré que vous en passiez un, lorsque WP exécute ses wp_enqueue_scripts hook, il l'ignorera. Peut-être essayez-vous d'utiliser une variable globale à la place.

$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 ); 
1
Erica