用ajax重新加载wordpress php部分


Reload wordpress php part with ajax

我使用的wordpress主题有不同的部分,例如footer.php或header.php。我想做的是使用jquery重新加载整个页面的一部分,这样整个页面就不会刷新。下面是我的代码与php部分,我想重新加载和jquery我使用。

php代码块内的Jquery代码

<script type="text/javascript">
                jQuery(document).ready(function(){
                    var thedata = '.json_encode($this->query_args).';
                    jQuery( ".facetwp-page" ).click(function() {

                        jQuery.ajax({
                            type: "post",
                            url:  "'.admin_url("admin-ajax.php").'",
                            data: { "action" : "query_for_map", "mydata" : thedata },
                            success: function(response, data){
                                console.log(response);
                                console.log(data);
                                jQuery("#map-head").load("'.get_template_directory_uri().'/banners/map_based_banner.php");
                                google.maps.event.trigger(map, "resize");
                            }
                        });
                    });
                });
                </script>

php模板部分要重新加载

<?php
session_start();
include('/home/javy1103/public_html/wp-blog-header.php');
global $paged;
$properties_for_map = array(
                        'post_type' => 'property',
                        'posts_per_page' => 12,
                        'paged' => $paged
                    );
if( is_page_template('template-search.php') || is_page_template('template-search-sidebar.php') ){
    /* Apply Search Filter */
    $properties_for_map = apply_filters( 'real_homes_search_parameters', $properties_for_map );
}elseif(is_page_template('template-home.php')){
    /* Apply Homepage Properties Filter */
    $properties_for_map = apply_filters( 'real_homes_homepage_properties', $properties_for_map );
}elseif(is_tax()){
    global $wp_query;
    /* Taxonomy Query */
    $properties_for_map['tax_query'] = array(
                                            array(
                                                'taxonomy' => $wp_query->query_vars['taxonomy'],
                                                'field' => 'slug',
                                                'terms' => $wp_query->query_vars['term']
                                            )
                                        );
}
function query_for_map() {
return json_decode($_POST['mydata']);
}
add_action('wp_ajax_query_for_map', 'query_for_map');
add_action('wp_ajax_nopriv_query_for_map', 'query_for_map');
$mapdata = $_SESSION['queryMap'];
$properties_for_map_query = new WP_Query( $mapdata );

$properties_data = array();
if ( $properties_for_map_query->have_posts() ) :
    while ( $properties_for_map_query->have_posts() ) :
        $properties_for_map_query->the_post();
        $current_prop_array = array();
        /* Property Title */
        $current_prop_array['title'] = get_the_title();
        /* Property Price */
        $current_prop_array['price'] = get_property_price();
        /* Property Location */
        $property_location = get_post_meta($post->ID,'REAL_HOMES_property_location',true);
        if(!empty($property_location)){
            $lat_lng = explode(',',$property_location);
            $current_prop_array['lat'] = $lat_lng[0];
            $current_prop_array['lng'] = $lat_lng[1];
        }
        /* Property Thumbnail */
        if(has_post_thumbnail()){
            $image_id = get_post_thumbnail_id();
            $image_attributes = wp_get_attachment_image_src( $image_id, 'property-thumb-image' );
            if(!empty($image_attributes[0])){
                $current_prop_array['thumb'] = $image_attributes[0];
            }
        }
        /* Property Title */
        $current_prop_array['url'] = get_permalink();
        /* Property Map Icon Based on Property Type */
        $property_type_slug = 'single-family-home'; // Default Icon Slug
        $type_terms = get_the_terms( $post->ID,"property-type" );
        if(!empty($type_terms)){
            foreach($type_terms as $typ_trm){
                $property_type_slug = $typ_trm->slug;
                break;
            }
        }
        if(file_exists(get_template_directory().'/images/map/'.$property_type_slug.'-map-icon.png')){
            $current_prop_array['icon'] = get_template_directory_uri().'/images/map/'.$property_type_slug.'-map-icon.png';
        }else{
            $current_prop_array['icon'] = get_template_directory_uri().'/images/map/single-family-home-map-icon.png';
        }
        $properties_data[] = $current_prop_array;
    endwhile;
    wp_reset_query();
?>

您可以生成所有的服务器端(PHP)工作,无需刷新页面的Ajax,然后你可以在HTML中使用它,你不能取代你的页面的PHP。例如:如果你想从数据库中获取一些数据,那么你可以发送一个ajax请求到PHP文件,然后获取数据并获得结果,然后在HTML中显示。