Ich habe eine AJAX-Form, die Beiträge basierend auf der Kategorie filtert. Setup:Sende PHP-Wert mit jQuery AJAX-Funktion zu PHP-Funktion
- HTML-Formular
- PHP-Funktion echo ouput
- jQuery Ajax-Request php Funktion
Frage zu laden: Wie kann ich einen Wert in die PHP-Funktion analysieren ($ Test, siehe unten) aus der jQuery Ajax-Funktion?
Form - Ausgänge html Auswahlfeld und Schaltfläche Beiträge filtern
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<?php
if($terms = get_terms('category', 'orderby=name')) : // to make it simple I use default categories
echo '<select name="categoryfilter"><option>Select category...</option>';
foreach ($terms as $term) :
echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // ID of the category as the value of an option
endforeach;
echo '</select>';
endif;
?>
<button>Apply filter</button>
<input type="hidden" name="action" value="myfilter">
</form>
<div id="response"></div>
PHP-Funktion - Ausgänge führen auf Tastenklick in HTML-Formular
function misha_filter_function($test){
// Do something with $test, but how to parse it with jQuery into this php function?
$args = array(
'orderby' => 'date', // we will sort posts by date
'order' => $_POST['date'] // ASC или DESC
);
// for taxonomies/categories
if(isset($_POST['categoryfilter']))
$args['tax_query'] = array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['categoryfilter']
)
);
$query = new WP_Query($args);
if($query->have_posts()) :
while($query->have_posts()): $query->the_post();
echo '<h2>' . $query->post->post_title . '</h2>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}
add_action('wp_ajax_myfilter', 'misha_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'misha_filter_function');
jQuery - Frage: Wie php value $ test auf die obige PHP-Funktion zu parsen?
jQuery(function($){
$('#filter').submit(function(){
var filter = $('#filter');
$.ajax({
url:filter.attr('action'),
data:filter.serialize(), // form data
type:filter.attr('method'), // POST
beforeSend:function(xhr){
filter.find('button').text('Processing...'); // changing the button label
},
success:function(data){
filter.find('button').text('Apply filter'); // changing the button label back
$('#response').html(data); // insert data
}
});
return false;
});
});
Dank. Kannst du mir ein wenig helfen, indem ich meinen Code benutze/verändere? – Bob
Nur Code neu schreiben, um $ inputValues zu verwenden: '$ inputValues = array(); parse_str ($ _ POST ['Daten'], $ inputValues); if (isset ($ inputValues ['categoryfilter'])) ' –
Ok und wie kann ich den Wert mit jQuery an die PHP-Funktion senden? Also, wie ändert man die jQuery-Funktion, dass es die Daten sendet? – Bob