我有一个范围滑块,我想在我的wordpress functions.php文件中使用该滑块的值作为已编写的shortcode函数的属性。基本上,这是到点距离的选择。我只需要使现有的distance属性变量并连接到范围滑块即可,该滑块将在提交时重新执行该功能。我对此非常迷失,不胜感激。谢谢!
答案 0 :(得分:0)
有两种方法可以真正做到这一点,这取决于提交时是否要重新加载页面。
方法1-将范围值作为url变量传递
将表单的值提交到页面上,然后使用以下数据重新加载它:
<form id="distance-form" action="<?php the_permalink() ?>" method="get">
<input type="range" min="0" max="5000" value="0" id="distance">
</form>
,然后在页面上的其他地方,您可能具有简码功能,该功能将包含距离值(如果已设置)。
例如
function example_shortcode(){
$distance = intval($_GET['distance']); //Get the url value of distance
if(!$distance || $distance < 0){ //Or set to zero if not a valid value
$distance = 0;
}
// Then do whatever we need with the function
}
方法2-使用AJAX
我们可以使用类似的方法,但是要使用AJAX,这将需要类似的PHP函数和JS函数来进行AJAX调用。
如果您不熟悉AJAX,我建议您读一读,https://premium.wpmudev.org/blog/using-ajax-with-wordpress/很好。
对于js,您可能最终会得到以下内容:
$("#distance-form").submit(function(event){
event.preventDefault();
jQuery.ajax({
url : localisedVars.ajax_url,
type : 'post',
data : {
action : 'function_name',
distance : $("#distance").val()
},
success : function( response ) {
/*Return the shortcode response from our PHP ajax call, we can then put it somewhere on the page*/
}
})
和
add_action( 'wp_ajax_nopriv_function_name', 'function_name' );
add_action( 'wp_ajax_function_name', 'function_name' );
function function_name() {
$distance = intval($_POST['distance']); //Get the ajax posted value of distance
if(!$distance || $distance < 0){ //Or set to zero if not a valid value
$distance = 0;
}
// Then do whatever we need with the function
echo $response //gets passed to the js function above
die();
}