Javascript 如何在Wordpress中从jQuery调用php函数

Javascript 如何在Wordpress中从jQuery调用php函数,javascript,php,jquery,wordpress,plugins,Javascript,Php,Jquery,Wordpress,Plugins,我在我的页面上显示类别下拉列表,一旦更改事件,我必须调用latestBlogView函数 我的所有代码都在function.php页面中 我需要使用AJAX吗? 没有AJAX可以吗? 我必须调用这个函数 function latestBlogView($atts){ var_dump($atts); $postData=$atts; // this code is for testing i have to use WP_Query here return $postDa

我在我的页面上显示类别下拉列表,一旦更改事件,我必须调用latestBlogView函数

我的所有代码都在function.php页面中

我需要使用AJAX吗? 没有AJAX可以吗? 我必须调用这个函数

function latestBlogView($atts){
    var_dump($atts);
    $postData=$atts; // this code is for testing i have to use WP_Query here
    return $postData; 
}
add_shortcode( 'latestblogs', 'latestBlogView');
在我的页面上显示dropdonw

function categoriesDropdown(){
$categories = get_categories( array(
    'orderby' => 'name',
    'order'   => 'ASC',
    'taxonomy' => 'blogs_cat',
) );
 $output='';
 $output.='<select name="catDropdown" id="catDropdown">';
foreach( $categories as $category ) {
    $output.='<option value="'.$category->term_id.'">'.$category->name.'</option>'; 
}
    $output.='</select>';
    $output.='<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" crossorigin="anonymous"></script><script>(function($){$("#catDropdown").change(function() {
    var value=$("#catDropdown").val();
    latestBlogView(value); // calling function here
    });
    })(jQuery)</script>';
    return $output;
}
add_shortcode( 'showCategoryList', 'categoriesDropdown');

我试着使用ajax,它很管用。我不知道这是不是最好的办法,但它解决了我的问题

我使用的是jquery-3.5.1.slim.min.js,所以我更改了它,因为我在控制台$中得到了错误。ajax不是一个函数

我尝试了下面的ajax代码

$output.='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" crossorigin="anonymous"></script><script>     
(function($) {  // ready handler
$("#catDropdown").change(function() {
     $.ajax({
        url: "/wp-admin/admin-ajax.php",
        type: "post",
        data: { action: "latestBlogView", keyword: $("#catDropdown").val() },
        success: function(data) {
            $("#latestblogs").html(data);
        }
    });
    });
    })(jQuery);</script>';

是的,您需要ajax,因为当选择某个选项时,您需要监听事件-我正在为您准备答案。另外,当您选择一个选项时调用latestBlogView时,您会怎么做?您是否要在一个页面上添加所有这些短代码。@AlwaysHelping,实际上在页面加载时,我必须最晚运行此函数BlogView,但当用户从下拉列表中选择时,我必须将值传递给此函数并获得输出和显示。@AlwaysHelping,两天前我问了一个问题。所以我必须解决这个问题。这是我问题的一小部分。您将在那里获得我的全部代码,但当用户从下拉列表中选择时,我必须将值传递给此函数并获得输出和显示-这非常令人困惑,而不是shortcode的工作方式。例如:如果您在一个页面上有categoriesDropdown短代码,然后用户选择一个选项,则此函数latestBlogView将调用ajax-您将不会在同一页面上看到更新的数据。短代码是一种静态的东西,当您可以调用它时,它不会得到更新。短代码在页面上运行。这有意义吗?是的,你发布的答案是我要发布的,我在评论中说了同样的话,你需要通过ajax成功返回$latestblogs.htmldata来显示数据;那些已经在做这件事的人——这是做这件事的最好和正确的方法。我想这个问题现在已经解决了。
add_action('wp_ajax_nopriv_latestBlogView', 'latestBlogView');
add_action('wp_ajax_latestBlogView', 'latestBlogView');

function latestBlogView($atts){
echo "hello"; // if you want to display the variable output on screen then use return $postData; 
}