web-dev-qa-db-fra.com

Utilisez wp_enqueue_scripts à partir du fichier php inclus

J'ai un vrai problème qui tire les cheveux ici.

J'ai commencé à nettoyer un plugin que j'ai créé et trié certaines des fonctions dans différents fichiers.

mais j'ai un problème avec wp_enqueue_scripts.

quand je place la fonction où je m'enregistre et mets en file d'attente dans le fichier php principal et essaie de mettre mon script en file d'attente à partir de là, il fonctionne comme il se doit

cependant, si je déplace la fonction dans un fichier php différent et essaie de la mettre en file d'attente à partir de ce fichier et d'inclure ce fichier php à partir du fichier php principal, rien ne se passe cependant, toutes les autres fonctions de ce fichier php fonctionnent comme elles le devraient

dois-je appeler une fonction wordpress à partir de mon autre fichier php pour pouvoir la retirer de là ou?

MODIFIER:

Si si place et appelle la fonction dans mon fichier php principal comme ci-dessous, il fonctionne comme un charme et le fichier js est affiché dans la tête lorsque je le cherche avec firefox

function scripts() { 
wp_register_script( 'load_table', plugins_url( 'path/js/load_table.js', __FILE__ ), array( 'jquery' ) );

wp_enqueue_script( 'load_table' );
}

add_action( 'wp_enqueue_scripts', 'scripts' );

Cependant, si j'essaie de l'écrire comme ci-dessous, rien ne se passe et on ne le trouve pas dans la tête

main.php:

include'path/to/other.php';

autre.php:

function scripts() { 
wp_register_script( 'load_table', plugins_url( 'vagt_oversigt/js/load_table.js', __FILE__ ), array( 'jquery' ) );

wp_enqueue_script( 'load_table' );
}


add_action( 'wp_enqueue_scripts', 'scripts' );

Les problèmes semblent se produire lorsque j'utilise des hooks avec des fonctions sur other.php

juste echo "hello world"; dans other.php cela fonctionne comme un charme.

Mais si j'essaie d'appeler echo dans une fonction par init, rien ne se passe non plus.

autre.php:

function test() {

echo "hello world";
}
add_action('init', 'test');

BTW! oui j'ai essayé de changer le chemin sans succès. des idées? :(

1
Alexander

J'ai trouvé le problème ....

J'ai couru main.php comme:

function run_this(){

include'path/to/other.php';
}
add_shortcode('shortcode', 'run_this');

Et la plupart du contenu de other.php est arrivé sauf les crochets qui ne fonctionnaient pas, puis j’ai essayé d’utiliser add_action('init', 'run_this');, puis cela a fonctionné ... sauf que j’obtiens une erreur fatale qui ne me permet pas de redéclarer deux fonctions: D

1
Alexander

Vous devez placer le code de mise en file d'attente dans une fonction et utiliser add_action pour appeler la fonction à laquelle vous vous enregistrez.

Comme ci-dessous

add_action( 'wp_enqueue_scripts', 'your_function_name', 10 );
0
Harry