it-swarm.com.de

Nur die jQuery-Funktion (auf dem Dokument bereit) auf der Seite hat einen Shortcode vom Plugin

Was ich irgendwann tun möchte, ist, wenn sich der Benutzer bei der Site angemeldet hat, die Seite mit allen von diesem Benutzer erstellten Beiträgen umzuleiten und diese über die Anforderung AJAX zu laden.

Ich habe einen Shortcode gespeichert, der alle Beiträge des aktuellen Benutzers enthält.

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

Und haben PHP-Funktion an AJAX Anfrage angeschlossen

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

jQuery-Funktion in 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();
});

Das Problem, das ich jetzt habe, ist, dass die jQuery-Funktion alle Seiten der Site durchläuft. Wie mache ich es nur auf der Seite ausgelöst hat der Shortcode eingefügt?

2
Ohsik

Sie können wp_enqueue_script in Ihren Shourtcode einfügen. Hier ist der Code, den ich behoben habe.

Registrieren Sie Ihre JS-Datei

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

und in Ihre Shortcode-Funktion einreihen

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

Dadurch wird nur Ihre JS-Datei geladen, auf der der Shortcode der Seite eingefügt ist.

1
Ohsik