在WordPress页面上运行PHP SQL脚本

时间:2019-10-04 作者:Divya Ramana

这是一个非常基本的问题。我正在使用Serverpress进行本地开发。我一直在尝试创建一个动态下拉列表。我读了一些书,发现了一个html、php和jquery脚本示例,适合我的要求。php代码存储在fike中,jquery使用load函数调用它。我不确定在哪里放置php脚本,以便将输出传递给jquery。请帮忙!

https://css-tricks.com/dynamic-dropdowns/

这就是我一直试图重现的。不知道要把吸气剂放在哪里。php!

2 个回复
SO网友:Star Light

您的问题涉及一种称为REST API的技术。WordPress支持它。你只需要make a pluginregister_rest_field → 通过它传递数据。

你想做的可能看起来很简单,但仍然有很多工作要做。此外,请记住加强插件安全性。

SO网友:Antti Koskinen

有很多方法可以满足你的要求。

如果您的php函数只是吐出一个选项数组,您可以考虑使用wp_localize_script() 然后通过引用脚本中的js对象获取数据。E、 g。

// theme functions.php or a plugin file
function dropdown_options() {
  // modify to match your setup
  wp_enqueue_script( \'my-scripts\', JS_DIR_URI . \'my-scripts.js\', array(\'jquery\'), null, true ); // main scripts file
  wp_localize_script( \'my-scripts\', \'dropdownOptions\', $array_of_dropdown_options );
}
add_action( \'wp_enqueue_scripts\', \'dropdown_options\' );

// in your js file, access dropdown options
dropdownOptions.someOption;
另一种选择是使用WP-admin-ajax在下拉选择更改时获取下拉选项。E、 g。

// theme functions.php or a plugin file
function data_from_admin_ajax() {
  wp_enqueue_script( \'frontend-ajax\', JS_DIR_URI . \'frontend-ajax.js\', array(\'jquery\'), null, true );
  wp_localize_script( \'frontend-ajax\', \'frontend_ajax_object\',
    array( 
      \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
    )
  );
}
add_action( \'wp_enqueue_scripts\', \'data_from_admin_ajax\' );

add_action( \'wp_ajax_dropdown_options\', \'my_awesome_dropdown_options_function\' ); // logged in users
add_action( \'wp_ajax_nopriv_dropdown_options\', \'my_awesome_dropdown_options_function\' ); // logged out users
function my_awesome_dropdown_options_function() {
  // nonce check, if needed
  // capabilities check, if needed
  // check for required parameter, if needed
  // do stuff and push data to $response
  // return ajax response with wp_send_json( $response ) or wp_send_json_success( $response ) or wp_send_json_error( $response )
}

// frontend-ajax.js
jQuery(document).ready(function($) {
  $(\'.some-dropdown\').on(\'change\',function(){
    var data = {
        \'action\': \'dropdown_options\',
        \'dropdownValue\': $(this).val()
    };    
    $.post(frontend_ajax_object.ajaxurl, data, function(response) {
        console.log(response);
    });
  });   
});
或者,如果需要,可以使用WP-restapi而不是admin-ajax。在这种情况下,您可能需要添加一个自定义端点,https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

相关推荐

如何允许像PHP、SQL、HTML这样的代码到WPBakery VisualComposer?

我想允许textarea中的代码使用PHP、SQL或HTML编写代码。。。我想做的是在Visual Composer中创建一个元素,在这里我可以放置一些代码,在我写文章时显示它。您可以在此处找到类型值:https://kb.wpbakery.com/docs/inner-api/vc_map/但这些都不适合我。有正确的方法吗?array( \"type\" => \"textarea_html\", \"heading\" => esc_html__(\"Text\",