我有一个带有提交按钮的表单。单击该按钮时,我想触发自定义操作。
HTML:
<div class="wrap">
<form method="post" action="ccs_fetch_list">
<?php submit_button(); ?>
</form>
</div>
PHP:
<?php
defined( 'ABSPATH' ) || die();
class CcsAdminPage {
public static function init() {
add_action( 'admin_menu', array( __CLASS__, 'add_menu' ) );
add_action( 'admin_enqueue_scripts', array( __CLASS__, 'load_scripts' ) );
add_action( 'admin_init', array( __CLASS__, 'register_settings' ) );
add_action( 'ccs_fetch_list', array( __CLASS__, 'fetch_list' ) );
}
...
public static function cc_fetch_list() {
// Do form stuff
wp_die( "We're here." );
}
}
但是,当我单击按钮时,WP会加载一个空白页面。为什么?该动作似乎没有被解雇。我需要做些什么才能确保调用该方法?
答案 0 :(得分:0)
我认为你不得不使用do_action
。
您需要将do_action('ccs_fetch_list');
放在您希望执行自定义挂钩的位置。
如何在wordpress中完成这样的事情。
add_action( 'wp_ajax_ccs_fetch_list', 'my_action' );
add_action( 'wp_ajax_nopriv_ccs_fetch_list', 'my_action' );
并使用ajax处理此问题。您可以参考here。
还有其他参考。您可以看到Confused on AJAX submit form through page template
答案 1 :(得分:0)
更改您的html如下:
_renderItem = ((item) => (
<SelectListItem
id = { item.item.id }
onPressItem = { this._onPressItem }
selected = { this.state.selected.get(item.id) }
title = { item.item.title }
/>
)
);
render(){
return(
<FlatList
data = {this._dataArray}
extraData = { this.state }
keyExtractor = {this._keyExtractor}
renderItem = { this._renderItem }
/>
);
}
现在在你的课堂上,替换:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Job>
<WSData WSName="PersonData">
<Name>Aghata</Name>
<Id>1234567899</Id>
</WSData>
<WSData " WSName="Standard">
<RawData>
<PersonalData>
<Name>
Aghata
</Name>
<Identifier>
123456789
</Identifier>
<Number>
12345678900
</Number>
</PersonalData>
</RawData>
</WSData>
</Job>
与
<div class="wrap">
<form method="post" action="<?php echo admin_url('admin-ajax.php'); ?>">
<input type="hidden" name="action" value="ccs_fetch_list">
<?php submit_button(); ?>
</form>
</div>