抓取输入值并将其在functions.php中用作属性

时间:2019-04-01 19:43:48

标签: php wordpress html5

我有一个范围滑块,我想在我的wordpress functions.php文件中使用该滑块的值作为已编写的shortcode函数的属性。基本上,这是到点距离的选择。我只需要使现有的distance属性变量并连接到范围滑块即可,该滑块将在提交时重新执行该功能。我对此非常迷失,不胜感激。谢谢!

1 个答案:

答案 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();

}