Utiliser Ajax dans WordPress

Publié par Jean-Michel le

Ma requête actuelle est

$args=array(
    'post_type'=>'product',
    'post_per_page'=>'10',
    'tax_query' => array(
            array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => 'car',
                ),
                        ),
            );
    $loop=new WP_Query($args);

Et j’ai des cases à cocherBus<input type="checkbox" class="ve-select" value="bus">

Boat<input type="checkbox" class="ve-select" value="boat">.

Actuellement, ce que je fais, c’est quand quelqu’un clique sur la case à cocher, je recharge la page en utilisant javascript et passe la valeur via la variable ‘ve’.

$args=array(
    'post_type'=>'product',
    'post_per_page'=>'10',
    'tax_query' => array(
            array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => $_REQUEST['ve'],
                ),
                        ),
            );
    $loop=new WP_Query($args);

S’il vous plaît, n’importe qui peut suggérer comment puis-je modifier la requête et afficher le résultat sans recharger.

S’il vous plaît aider les amis.

Solution n°1 trouvée

Veuillez essayer le code suivant ::

dans Votre post_page

<script>
    function getPostList(val)
    {
        jQuery.ajax({
            url: '<?= admin_url('admin-ajax.php') ?>',
            data: {action:'my_action', term: val, secret: '<?php wp_create_nonce('listPost_byCat'); ?>'},
            method: 'POST',
            success: function(res){
                jQuery('#post-div').html(res);
            }
        });
    }

    jQuery(document).ready(function(){
        jQuery('.ve-select).on('click', function(){
            getPostList(jQuery(this).val());
        });
    });
</script>

dans fonctions.php

<?php
    add_action('wp_ajax_my_action', 'my_action_handler');
    add_action('wp_ajax_nopriv_my_action', 'my_action_handler');

    function my_action_handler()
    {
        if(wp_verify_nonce($_POST['secret'], 'listPost_byCat'))
        {
            $args=array(
                'post_type'=>'product',
                'post_per_page'=>'10',
                'tax_query' => array(
                        array(
                            'taxonomy' => 'product_cat',
                            'field'    => 'slug',
                            'terms'    => $_POST['term'],
                        ),
                    ),
                );
            $loop=new WP_Query($args);

            if(!empty($loop))
            {
                foreach($loop as $post)
                {
                    echo $post->post_title() . '<br/>';
                }
            }
        }
    }
?>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *