WordPress dynamic AJAX query

时间:2015-01-08 作者:dannyw24

目标-我正在尝试根据从下拉列表中选择的类别运行查询。

我认为最好的方法是动态使用AJAX,并将变量持有的类别值传递给WordPress查询。

我已经成功创建了一个下拉菜单,该菜单通过ACF用户元数据填充,因此我需要将所选值传递给查询,使其在每次选择新类别时更新结果。

生成下拉列表的代码-

<?php 

        $field_key = "field_5481bc1472b1d";
        $field = get_field_object($field_key);

        if( $field )
        {
            echo \'<select class="form-control" name="\' . $field[\'key\'] . \'">\';
            foreach( $field[\'choices\'] as $k => $v )
            {
                echo \'<option value="\' . $k . \'">\' . $v . \'</option>\';
            }
            echo \'</select>\';
        }

?>

1 个回复
最合适的回答,由SO网友:NateWr 整理而成

法典包括一个有用的页面AJAX in plugins 它概述了如何发送和接收ajax请求。

下面的代码介绍了在更改select字段并发出ajax请求时如何触发事件。确保获取并设置了nonce值。

/**
* Only execute after jQuery is loaded
*/
jQuery(document).ready(function ($) {

    /**
     * Trigger an event when the select field is changed.
     */
    $( \'select[name="field_5481bc1472b1d"]\' ).change( function() {

        /**
         * The data you will send via ajax. Action
         * needs to be a unique slug you will use
         * to identify and respond to the call.
         * An nonce will be needed to verify the
         * authenticity of the call.
         */
        var data = {
            \'action\': \'customslug-action-name\',
            \'selected\': $(this).val(),
            \'nonce\': YOUR_NONCE_VALUE,
        };

        $.get( ajaxurl, data, function( r ) { 

            if ( r.success ) {
                // do your thing
            } else {
                // there was some error
            }
        });
    });
});
然后在服务器端,您将通过挂接到与您的操作相关联的经过身份验证和未经身份验证的ajax挂钩来接收和响应调用:

add_action( \'wp_ajax_customslug-action-name\', \'my_action_callback_for_logged_in_users\' );
add_action( \'wp_ajax_nopriv_customslug-action-name\', \'my_action_callback_for_logged_out_users\' );
确保您正在使用check_ajax_referrer() 验证nonce。可以使用生成noncewp_nonce_field() 或者使用将其直接传递给JavaScriptwp_create_nonce.

结束

相关推荐

在模式窗口中使用AJAX加载php函数

在我正在开发的电影信息wordpress主题上,我在所有电影的每个封面上都有一个带有文本“观看预告片”的href。这带来了一个模式窗口,它已经在工作了,但我想把电影的预告片带到onclick,而不必重新加载页面。为了进行测试并在这里寻求帮助,我做了一个循环,只为一部电影获取此“info”href所需的数据。(head.php中有ajax库)收到php:<?php include \'head.php\' ?> <script> function trailerPro

WordPress dynamic AJAX query - 小码农CODE - 行之有效找到问题解决它

WordPress dynamic AJAX query

时间:2015-01-08 作者:dannyw24

目标-我正在尝试根据从下拉列表中选择的类别运行查询。

我认为最好的方法是动态使用AJAX,并将变量持有的类别值传递给WordPress查询。

我已经成功创建了一个下拉菜单,该菜单通过ACF用户元数据填充,因此我需要将所选值传递给查询,使其在每次选择新类别时更新结果。

生成下拉列表的代码-

<?php 

        $field_key = "field_5481bc1472b1d";
        $field = get_field_object($field_key);

        if( $field )
        {
            echo \'<select class="form-control" name="\' . $field[\'key\'] . \'">\';
            foreach( $field[\'choices\'] as $k => $v )
            {
                echo \'<option value="\' . $k . \'">\' . $v . \'</option>\';
            }
            echo \'</select>\';
        }

?>

1 个回复
最合适的回答,由SO网友:NateWr 整理而成

法典包括一个有用的页面AJAX in plugins 它概述了如何发送和接收ajax请求。

下面的代码介绍了在更改select字段并发出ajax请求时如何触发事件。确保获取并设置了nonce值。

/**
* Only execute after jQuery is loaded
*/
jQuery(document).ready(function ($) {

    /**
     * Trigger an event when the select field is changed.
     */
    $( \'select[name="field_5481bc1472b1d"]\' ).change( function() {

        /**
         * The data you will send via ajax. Action
         * needs to be a unique slug you will use
         * to identify and respond to the call.
         * An nonce will be needed to verify the
         * authenticity of the call.
         */
        var data = {
            \'action\': \'customslug-action-name\',
            \'selected\': $(this).val(),
            \'nonce\': YOUR_NONCE_VALUE,
        };

        $.get( ajaxurl, data, function( r ) { 

            if ( r.success ) {
                // do your thing
            } else {
                // there was some error
            }
        });
    });
});
然后在服务器端,您将通过挂接到与您的操作相关联的经过身份验证和未经身份验证的ajax挂钩来接收和响应调用:

add_action( \'wp_ajax_customslug-action-name\', \'my_action_callback_for_logged_in_users\' );
add_action( \'wp_ajax_nopriv_customslug-action-name\', \'my_action_callback_for_logged_out_users\' );
确保您正在使用check_ajax_referrer() 验证nonce。可以使用生成noncewp_nonce_field() 或者使用将其直接传递给JavaScriptwp_create_nonce.

相关推荐

无法使用AJAX访问数据库中的数据

我正试图在wordpress中首次调用AJAX。我遵循了一些教程,到目前为止已经达到了这一点。但当我试图安慰的时候。将从数据库中获取的数据记录在AJAX调用中,我发现以下错误:未捕获引用错误:未定义数据代码:功能。phpfunction my_ajax_handler(){ global $wpdb; $name = $wpdb->get_results(\"SELECT * FROM username\"); echo $name;