Wordpress:为什么自定义操作不会触发?

时间:2018-04-18 09:32:54

标签: php wordpress

我有一个带有提交按钮的表单。单击该按钮时,我想触发自定义操作。

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会加载一个空白页面。为什么?该动作似乎没有被解雇。我需要做些什么才能确保调用该方法?

2 个答案:

答案 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

ajax form post submission using wordpress

答案 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>