这是场景:
- 一个类别中有多个产品(产品表示特定类别中的帖子)
- 每个产品(帖子)都有几个图像(我通过添加自定义字段来管理它)
- 在前端,产品会一起显示
- 在该页面的页脚中会有一个图像滑块
- 单击每个产品名称,将根据单击的产品更改滑块图像
所以我只需要获取与点击的产品相对应的自定义字段值。是否可以使用 AJAX 请求来做到这一点。这样我就可以管理所有这些过程而无需回发。
谢谢。
我没有 wordpress 的经验,但我可以向您展示 AJAX 的示例。
据我所知,您必须在点击相关帖子或产品时调用 ajax 函数。
<script>
jQuery(document).ready(function () {
jQuery("#PRODCUTID").click(function () {
jQuery.ajax({
type : "POST"
,url :"YOUR_URL_ON_WHICH_YOU_PUT_LOGIC_TO_FETCH_IDS_FOR_SLIDER"
,data :"CLICKED_PRODUCT_ID="+CLICKED_PRODUCT_ID // this the variable which will be posted and will find it (particular URL which you passed) on the controller action or in view file
,success : function(data){
//YOUR CODE HERE WHICH IS REPLACING PRODUCT ID
}
,beforeSend: function(html){
//some kind of loader or text mean while data is waiting for the response
},
});
})
})
</script>
希望这会有所帮助,并随时询问 AJAx 请求的任何内容。
这很容易。当然感谢 Rajat Modi 对 ajax 的帮助。干得好 :
将此添加到模板文件中的 functions.php 中:
wp_enqueue_script( 'ajax-script', get_stylesheet_directory_uri().'/js/myajax.js', array('jquery'), 1.0 ); // jQuery will be included automatically
// get_template_directory_uri() . '/js/script.js'; // Inside a parent theme
// get_stylesheet_directory_uri() . '/js/script.js'; // Inside a child theme
// plugins_url( '/js/script.js', __FILE__ ); // Inside a plugin
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); // setting ajaxurl
add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' ); // ajax for logged in users
add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' ); // ajax for not logged in users
function ajax_action_stuff()
{
$post_id = $_POST['post_id']; // getting variables from ajax post
// doing ajax stuff
$custom_fields = get_post_custom($post_id);
$imageurlset = $custom_fields['images'];
$urlstring = $imageurlset[0];
$imageurl = explode(',', $urlstring);
//update_post_meta($post_id, 'post_key', 'meta_value');
exit(json_encode($imageurl)); // stop executing script
}
创建以下代码并将其添加到“/js/script.js”:
$(document).ready(
function() {
$('.prduct_name').click(function () {
$('.spcl_content').find('.prduct_name').removeClass("selected");
$(this).addClass("selected");
var ithis = $(this);
$.post(ajax_object.ajaxurl, {
action: 'ajax_action',
post_id: ithis.attr("id")
}, function(data) {
var number_of_images = data.length;
//console.log(data);
var image_link="";
for(var i=0; i<number_of_images; i++)
{
var image_url = data[i];
image_link = image_link+'<li><a href="'+image_url+'" rel="scroller" target="temp_win"><img src="'+image_url+'"/></a></li>'
}
//console.log(image_link); // alerts 'ajax submitted'
var starting='<div class="wt-scroller"><div class="prev-btn"></div><div class="slides"><ul class="slider_mania">';
var ending='</ul></div><div class="next-btn"></div><div class="lower-panel"></div></div>';
var total=starting+image_link+ending;
//console.log(total);
$(".container_carol").html(total).fadeIn("slow");
},"json");
return false;
});
我希望现在很清楚。再次感谢回复我的朋友。祝你有美好的一天。:)