web-dev-qa-db-fra.com

N'exécutez la fonction jQuery (sur le document prêt) que sur la page a shortcode du plugin

Ce que je souhaite finalement faire, c’est lorsque l’utilisateur est connecté au site, je souhaite rediriger le message vers la page avec tous les articles créés par cet utilisateur et je souhaite les charger via la demande AJAX.

J'ai sauvegarder shortcode qui aura tous les messages de l'utilisateur actuel.

function ajax_write_here(){
    $output = '<div id="write_here_ajax_wrap"></div>';
    return $output;
}
add_shortcode('write-here-ajax', 'ajax_write_here');

Et avoir la fonction php accrochée à la demande AJAX

function write_here_ajax_dashboard() {
    echo "test";
}
add_action( 'wp_ajax_write_here_get_posts', 'write_here_ajax_dashboard' );

fonction jQuery dans Document Ready

jQuery(document).ready( function($) {
    function write_here_list_page(){
        $.ajax({
            type: "GET",
            url: ajax_object.ajax_url, // check the exact URL for your situation
            dataType: 'html',
            data: {
                action: 'write_here_get_posts',
                security: ajax_object.ajax_nonce
            },
            error: function(jqXHR, textStatus, errorMessage) {
                console.log(errorMessage);
                return false;
            },
            success: function(data) {
                //console.log(data);
                $('#write_here_ajax_wrap').html('');
                $('#write_here_ajax_wrap').append(data);
            }

        });
    }
    // Initiate function
    write_here_list_page();
});

Le problème que j'ai maintenant est que la fonction jQuery est déclenchée toutes les pages à travers le site. Comment puis-je le faire déclencher sur la page si le Shortcode est inséré?

2
Ohsik

Vous pouvez wp_enqueue_script dans votre shourtcode. Voici le code que j'ai corrigé.

Enregistrez votre fichier JS

function wh_enqueue() {
    wp_register_script( 'wh-ajax-app', WH_PATH . '/js/write-here-ajax.js', array('jquery'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'wh_enqueue' );

et mettre en file d'attente dans votre fonction shortcode

function ajax_write_here(){
    wp_enqueue_script( 'wh-ajax-app' ); // Enqueue your script here
    $output = '<div id="write_here_ajax_wrap"></div>';
    return $output;
}
add_shortcode('write-here-ajax', 'ajax_write_here');

Cela ne chargera que votre fichier JS sur la page où un shortcode est inséré.

1
Ohsik