How do I add a simple jQuery script to WordPress?

后端 未结 18 1705
心在旅途
心在旅途 2020-11-22 16:53

I read the Codex and a few blog posts about using jQuery in WordPress, and its very frustrating. I\'ve got as far as loading jQuery in functions.php file, but a

相关标签:
18条回答
  • 2020-11-22 17:33

    The solutions I've seen are from the perspective of adding javascript features to a theme. However, the OP asked, specifically, "How exactly do I add it for a single WordPress page?" This sounds like it might be how I use javascript in my Wordpress blog, where individual posts may have different javascript-powered "widgets". For instance, a post might let the user change variables (sliders, checkboxes, text input fields), and plots or lists the results.

    Starting from the JavaScript perspective:

    1. Write your JavaScript functions in a separate “.js” file

    Don’t even think about including significant JavaScript in your post’s html—create a JavaScript file, or files, with your code.

    1. Interface your JavaScript with your post's html

    If your JavaScript widget interacts with html controls and fields, you’ll need to understand how to query and set those elements from JavaScript, and also how to let UI elements call your JavaScript functions. Here are a couple of examples; first, from JavaScript:

    var val = document.getElementById(“AM_Freq_A_3”).value;
    

    And from html:

    <input type="range" id="AM_Freq_A_3" class="freqSlider" min="0" max="1000" value="0" oninput='sliderChanged_AM_widget(this);'/>
    
    1. Use jQuery to call your JavaScript widget’s initialization function

    Add this to your .js file, using the name of your function that configures and draws your JavaScript widget when the page is ready for it:

    jQuery(document).ready(function( $ ) {
        your_init_function();
    });
    
    1. In your post’s html code, load the scripts needed for your post

    In the Wordpress code editor, I typically specify the scripts at the end of the post. For instance, I have a scripts folder in my main directory. Inside I have a utilities directory with common JavaScript that some of my posts may share—in this case some of my own math utility function and the flotr2 plotting library. I find it more convenient to group the post-specific JavaScript in another directory, with subdirectories based on date instead of using the media manager, for instance.

    <script type="text/javascript" src="/scripts/utils/flotr2.min.js"></script>
    <script type="text/javascript" src="/scripts/utils/math.min.js"></script>
    <script type="text/javascript" src="/scripts/widgets/20161207/FreqRes.js"></script>
    
    1. Enqueue jQuery

    Wordpress registers jQuery, but it isn’t available unless you tell Wordpress you need it, by enqueuing it. If you don’t, the jQuery command will fail. Many sources tell you how to add this command to your functions.php, but assume you know some other important details.

    First, it’s a bad idea to edit a theme—any future update of the theme will wipe out your changes. Make a child theme. Here’s how:

    https://developer.wordpress.org/themes/advanced-topics/child-themes/

    The child’s functions.php file does not override the parent theme’s file of the same name, it adds to it. The child-themes tutorial suggest how to enqueue the parent and child style.css file. We can simply add another line to that function to also enqueue jQuery. Here's my entire functions.php file for the child theme:

    <?php
    add_action( 'wp_enqueue_scripts', 'earlevel_scripts_enqueue' );
    function earlevel_scripts_enqueue() {
        // styles
        $parent_style = 'parent-style';
        wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
        wp_enqueue_style( 'child-style',
            get_stylesheet_directory_uri() . '/style.css',
            array( $parent_style ),
            wp_get_theme()->get('Version')
        );
    
        // posts with js widgets need jquery
        wp_enqueue_script('jquery');
    }
    
    0 讨论(0)
  • 2020-11-22 17:34

    If you use wordpress child theme for add scripts to your theme, you should change the get_template_directory_uri function to get_stylesheet_directory_uri, for example :

    Parent Theme :

    add_action( 'wp_enqueue_scripts', 'add_my_script' );
    function add_my_script() {
        wp_register_script(
            'parent-theme-script', 
            get_template_directory_uri() . '/js/your-script.js', 
            array('jquery') 
        );
    
        wp_enqueue_script('parent-theme-script');
    }
    

    Child Theme :

    add_action( 'wp_enqueue_scripts', 'add_my_script' );
    function add_my_script() {
        wp_register_script(
           'child-theme-script', 
           get_stylesheet_directory_uri() . '/js/your-script.js', 
           array('jquery') 
        );
    
        wp_enqueue_script('child-theme-script');
    }
    

    get_template_directory_uri : /your-site/wp-content/themes/parent-theme

    get_stylesheet_directory_uri : /your-site/wp-content/themes/child-theme

    0 讨论(0)
  • 2020-11-22 17:36

    There are many tutorials and answers here how to add your script to be included in the page. But what I couldn't find is how to structure that code so it will work properly. This is due the $ being not used in this form of JQuery.

    So here is my code and you can use that as a template.

    jQuery(document).ready(function( $ ){
      $("#btnCalculate").click(function () {
            var val1 = $(".visits").val();
            var val2 = $(".collection").val();
            var val3 = $(".percent").val();
            var val4 = $(".expired").val();
            var val5 = $(".payer").val();
            var val6 = $(".deductible").val(); 
            var result = val1 * (val3 / 100) * 10 * 0.25;
            var result2 = val1 * val2 * (val4 / 100) * 0.2;
            var result3 = val1 * val2 * (val5 / 100) * 0.2;
            var result4 = val1 * val2 * (val6 / 100) * 0.1;
            var val7 = $(".pverify").val();
            var result5 = result + result2 + result3 + result4 - val7;
            var result6 = result5 * 12;
            $("#result").val("$" + result);
            $("#result2").val("$" + result2);
            $("#result3").val("$" + result3);
            $("#result4").val("$" + result4);
            $("#result5").val("$" + result5);
            $("#result6").val("$" + result6);
      });
    });
    
    0 讨论(0)
  • 2020-11-22 17:37

    In WordPress, the correct way to include the scripts in your website is by using the following functions.

    wp_register_script( $handle, $src )
    wp_enqueue_script( $handle, $src )
    

    These functions are called inside the hook wp_enqueue_script.

    For more details and examples, you can check Adding JS files in Wordpress using wp_register_script & wp_enqueue_script

    Example:

    function webolute_theme_scripts() {
        wp_register_script( 'script-name', get_template_directory_uri() . '/js/example.js', array('jquery'), '1.0.0', true );
        wp_enqueue_script( 'script-name' );
    }
    add_action( 'wp_enqueue_scripts', 'webolute_theme_scripts' );
    
    0 讨论(0)
  • 2020-11-22 17:38

    After much searching, I finally found something that works with the latest WordPress. Here are the steps to follow:

    1. Find your theme's directory, create a folder in the directory for your custom js (custom_js in this example).
    2. Put your custom jQuery in a .js file in this directory (jquery_test.js in this example).
    3. Make sure your custom jQuery .js looks like this:

      (function($) {
      $(document).ready(function() {
      $('.your-class').addClass('do-my-bidding');
      })
      })(jQuery);
      
    4. Go to the theme's directory, open up functions.php

    5. Add some code near the top that looks like this:

      //this goes in functions.php near the top
      function my_scripts_method() {
      // register your script location, dependencies and version
         wp_register_script('custom_script',
         get_template_directory_uri() . '/custom_js/jquery_test.js',
         array('jquery'),
         '1.0' );
       // enqueue the script
        wp_enqueue_script('custom_script');
        }
      add_action('wp_enqueue_scripts', 'my_scripts_method');
      
    6. Check out your site to make sure it works!
    0 讨论(0)
  • 2020-11-22 17:38

    you can write your script in another file.And enqueue your file like this suppose your script name is image-ticker.js.

    wp_enqueue_script( 'image-ticker-1', plugins_url('/js/image-ticker.js', __FILE__), array('jquery', 'image-ticker'), '1.0.0', true ); 
    

    in the place of /js/image-ticker.js you should put your js file path.

    0 讨论(0)
提交回复
热议问题