web-dev-qa-db-fra.com

JQuery ne fonctionne pas dans mon plugin

C'est la première fois que j'utilise JQuery dans un plugin WordPress, et j'ai quelques problèmes.

Voici mon document "principal" du plugin:

<?php

/*
    Plugin Name: Dump-It Scheduler
    Plugin URI: 
    Description:Description
    Version: 1.0
    Author: Blaine Anderson
    Author URI: http://www.blainevanderson.net
    License: 

*/

add_action( 'wp_enqueue_script', 'load_jquery' );
add_action('wp_register_script', 'register_script');
add_action('wp_enqueue_script', 'run_js_script');
add_action('admin_menu', 'add_master_schedule'); 
add_action('admin_menu', 'add_customer_search'); 
add_action('admin_menu', 'add_edit_trucks');
add_action('admin_menu', 'add_new_customer'); 

//Add master schedule link to Admin bar in WP
function add_master_schedule()
{
    add_menu_page('Master Schedule', 'Master Schedule', 'administrator', 'Master_Dump-it_Schedule', 'display_menu'); 
}

//Display the master schedule when link is clicked
function display_menu()
{
    include( plugin_dir_path( __FILE__ ) . '/Views/admin_main_display.php');
}

//Add customer search link to admin bar
function add_customer_search()
{
    add_menu_page('Customer Search', 'Customer Search', 'administrator', 'Customer_Search', 'display_customer_search');
}

//Display customer search page
function display_customer_search()
{
    include( plugin_dir_path( __FILE__ ) . '/Views/search_customer.php');
}

//Add edit trucks link to admin bar
function add_edit_trucks()
{
    add_menu_page('Edit Trucks', 'Edit Trucks', 'administrator', 'Display_Edit_Trucks', 'display_edit_trucks');
}

//Display edit trucks page when link is clicked.
function display_edit_trucks()
{
    include( plugin_dir_path( __FILE__ ) . '/Views/edit_trucks.php');
}

//Add 'add customer' link to admin bar
function add_new_customer()
{
    add_submenu_page('Customer_Search', 'Add Customer', 'Add Customer', 'administrator', 'Add_Customer', 'display_add_customer');
}

//Display add customer page when link is clicked.
function display_add_customer()
{
    include(plugin_dir_path(__FILE__) . '/Views/add_customer.php'); 
}

//Load jquery into plugin
function load_jquery() 
{
    wp_enqueue_script( 'jquery' );
}

function run_js_script()
{
    wp_enqueue_script('my_plugin_script'); 
}
function register_script()
{
    wp_register_script( 'my_plugin_script', plugins_url('/js/scheduler.js', __FILE__), array('jquery'), '1.0', false);
}
?>

Voici mon Javascript qui affiche simplement une alerte (scheduler.js):

jQuery(document).ready(function($){
    alert("Hello World!");
});

Je me demande pourquoi l'alerte n'apparaît pas. J'ai également essayé d'ajouter le wp_enqueue_script au fichier HTML, qui ressemble à ceci:

<?php
wp_enqueue_script( 'my_plugin_script' );
?>

<table width="100%" id="menubar">
    <tr>
        <td><a href="" onclick="display_customer_search();">Master Schedule</a> | <a href=truckroutes.php>Create Truck Routes</a> | <a href="search.php">Customer Search</a> | <a href="trucks.php">Edit Trucks</a> | <a href="customeredit.php?id=new">Add Customer</a> | <a href="/cms/login.php">CMS Login</a> | </td> 
    </tr>
</table>

Je suis très nouveau dans WordPress et toute direction ou aide serait la bienvenue. Si vous avez besoin d'un autre code, s'il vous plaît faites le moi savoir, mais c'est la majeure partie. Le seul autre code que j'ai est celui des vues pour les autres liens.

1
Blaine

Vous utilisez une action invalide:

add_action('wp_enqueue_script', 'run_js_script');

L'action correcte est wp_enqueue_scripts (pluriel), pas wp_enqueue_script (singulier). Utilisez ceci à la place:

add_action('wp_enqueue_scripts', 'run_js_script');

Modifier

Même problème ici:

add_action('wp_register_script', 'register_script');

Il suffit de le raccorder à wp_enqueue_scripts pour plus de simplicité:

add_action('wp_enqueue_scripts', 'register_script');

En fait, deux meilleures options:

  1. Placez votre appel wp_register_script() dans le même rappel run_js_script que votre appel wp_enqueue_script().
  2. Éliminez wp_register_script() entièrement et utilisez simplement les paramètres complets dans wp_enqueue_script().
2
Chip Bennett