Saltar al contenido

WordPress y Ajax: recargar contenido de shortcode

Queremos darte la mejor respuesta que encontramos en internet. Nosotros esperamos que te sea de mucha utilidad y si quieres aportar algo que nos pueda ayudar a perfeccionar nuestra información hazlo con total libertad.

Solución:

Escribiría un comentario, pero mi reputación actual solo me permite escribir una respuesta. Aquí identifico mi solución para reimprimir el contenido de la salida AJAX.

En PHP, agregue un contenedor div con ID:

function contentDemoConnecteurs()
    $html = '
'; $html .= 'Choix du projet : '; $html .= '
'; $html .= 'Choix de la version : '; if (isset ($this->versions)) $html .= ''; $html .= '
'; return $html;

En JQuery:

jQuery(document).ready(function($) 
    $('#projectChosen').on('change', function () 
        jQuery.ajax(
            type: "POST",
            url: ajax_object.ajaxurl,
            data: 
                'action': 'setProjectChosen',
                'demo_projet_name': $('#projectChosen option:selected').val()
            ,
            success: function (output) 
                $( "div#projectSelector" ).replaceWith(output);
            ,
            error: function(errorThrown)
                console.log(errorThrown);
            
        );
     );
 );

Espero que eso sea lo que necesitas.

Finalmente lo logré, me confundí sobre lo que quería hacer…

setProjects();

        $this->initAjaxActions();

        add_action('admin_enqueue_scripts', array($this,'demo_scripts'));
        add_action('wp_enqueue_scripts', array($this,'demo_scripts'));


        $this->init();
    

    function initAjaxActions()
        add_action('wp_ajax_setProjectChosen', array($this,'setProjectChosen'));
        add_action('wp_ajax_nopriv_setProjectChosen', array($this,'setProjectChosen'));
    

    function demo_scripts()
        wp_register_script( 'ajaxHandle', plugins_url() . '/DemoConnecteurs/buttons_ajax.js');
        wp_localize_script( 'ajaxHandle', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

        wp_enqueue_script( 'ajaxHandle');
    

    function init()
        add_shortcode( 'demoConnecteurs', array($this,'demoConnecteurs_shortcode') );
    

    function demoConnecteurs_shortcode () 
        return $this->contentDemoConnecteurs();
    

    public function setProjects()
        $this->projects = getProjects();
    

    public function setProjectChosen()
        if (isset ($_POST['demo_projet_name']))$this->project_name = $_POST['demo_projet_name'];
        $this->project_id = getProjectIdFromName($this->mantisClient,  $_SESSION['username'], $_SESSION['password'], $this->project_name);

        $this->setVersions();
        echo $this->contentDemoConnecteurs();
        wp_die();
    

    public function setVersions()
        $this->versions = getVersionsOfProjectChosen($this->project_id);
    

    function contentDemoConnecteurs()
        $html = '
'; $html .= 'Choix du projet : '; $html .= '
'; $html .= 'Choix de la version : '; if (isset ($this->versions)) $html .= ''; $html .= '
'; return $html;
jQuery(document).ready(function($) 

    $('#projectChosen').on('change', function () 
        jQuery.ajax(
            type: "POST",
            url: ajax_object.ajaxurl,
            data: 
                'action': 'setProjectChosen',
                'demo_projet_name': $('#projectChosen option:selected').val()
            ,
            success: function (output) 
                $('#contentDemoConnecteurs').replaceWith(output);
            ,
            error: function(errorThrown)
                console.log(errorThrown);
            
        );
     );
 );

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *