Saya mengalami masalah membuat pencarian ajax di halaman posting tunggal saya. Saya perlu membatasi hasil pencarian untuk jenis posting khusus "fod_videos" dan "posting" dan kategori 12. Masalah saya adalah pencarian mengembalikan semua posting di bawah filter tersebut dan tidak mengambil nilai pencarian. Saya kira saya kehilangan sesuatu yang jelas tapi saya bisa mengetahuinya. Ini pengaturan saya.
<div class="panel">
<h2>Search Videos</h2>
<div id="my-search">
<form role="search" method="get" id="searchform" action="http://myurl.com/" >
<input type="text" value="" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
</div>
</div>
add_action('wp_ajax_wpa5000_search', 'wpa5000_search');
add_action('wp_ajax_nopriv_wpa5000_search', 'wpa5000_search');
function wpa5000_search(){
global $wp_query;
$search = $_POST['search_val'];
$args = array(
's' => $search,
'posts_per_page' => 10,
'cat' => 12,
'post_type' => array( 'post','fod_videos' )
);
$wp_query = new WP_Query( $args );
get_template_part( 'video-search-results' );
exit;
}
add_action( 'wp_enqueue_scripts', 'wpa56343_scripts', 100 );
function wpa56343_scripts() {
wp_enqueue_script(
'wpa56343_script',
get_template_directory_uri() . '/libs/search.js?ver=1.0',
array( 'jquery' ),
null,
false
);
wp_localize_script(
'wpa56343_script',
'WPaAjax',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
)
);
}
// search.php
$(document).ready(function($){
$('#searchsubmit').click(function(e){
var $panel = $(this).closest(".panel");
$panel.empty();
e.preventDefault();
var search_val=$("#s").val();
$.post(
WPaAjax.ajaxurl,
{
action : 'wpa5000_search',
search_val : search_val
},
function( response ) {
$panel.append( response );
}
);
});
});
//video-search-results.php
<?php
while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
//STUFF
<?php endwhile; ?>
custom-post-types
wp-query
search
ajax
Pollux Khafra
sumber
sumber
Jawaban:
Alih-alih
'cat' => 12
dan$wp_query
menggunakan'category_name' => slug
danget_posts()
.Berikut ini adalah contoh dasar cara kerjanya:
PHP
JavaScript
search.js
Membatasi pencarian
Alih-alih saya,
$this->render_search_results( $posts );
Anda juga dapat memuat template dari tema Anda dan menggunakan$posts
array dalam hasil yang lebih canggih. :)sumber
Saya mendapatkan kode asli berfungsi, tetapi dengan jenis posting khusus (tanpa kategori). Tambahkan input tersembunyi di formulir Anda dengan jenis posting Anda seperti ini:
sumber