wordpress 提交表单到admin-post.php

w1e3prcc  于 2023-03-17  发布在  WordPress
关注(0)|答案(1)|浏览(259)

我一直试图得到一个基本的插件工作,我已经按照什么似乎是流得到的形式张贴到admin-post.php。
然而,我似乎在死亡的白色屏幕和后端管理菜单之间来回穿梭,后台管理菜单只是 Flink ,没有给出任何错误或消息。数据也没有写入数据库。
这是我的主插件文件

<?php 
/**
 * Plugin Name: Test form
 */

function wp_meetings_menu(){
    add_menu_page('Meetings', 'Meetings', 'manage_options', 'wp_meetings', 'wp_meetings_form');
}

add_action('admin_menu', 'wp_meetings_menu');

function wp_meetings_form() {
    ?>
    <div class="wrap">
        <h2>Meetings</h2>
        <form method="post" action="<?php admin_url('admin-post.php'); ?>" enctype="multipart/form-data">
            <label>Date and Time:</label>
            <input type="datetime-local" name="datetime"><br><br>2
            <label>Drop Down 1:</label>
            <select name="dropdown1">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>Drop Down 2:</label>
            <select name="dropdown2">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>Drop Down 3:</label>
            <select name="dropdown3">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>PDF File:</label>
            <input type="file" name="pdf_file"><br><br>
            <input type="submit" name="submit" value="Submit">
            <input type="hidden" name="action" value="wp_meetings_submit" />
        </form>
    </div>
    <?php
}

?>

这是functions.php文件中的函数和钩子

add_action( 'admin_post_wp_meetings_submit', 'wp_meetings_submit' );
add_action( 'admin_post_nopriv_wp_meetings_submit', 'wp_meetings_submit' );

function wp_meetings_submit(){
    global $wpdb;
    if(isset($_POST['submit'])){
        $datetime = $_POST['datetime'];
        $dropdown1 = $_POST['dropdown1'];
        $dropdown2 = $_POST['dropdown2'];
        $dropdown3 = $_POST['dropdown3'];
        $pdf_file = $_FILES['pdf_file']['name'];
        $upload_dir = wp_upload_dir();
        $pdf_path = $upload_dir['path'] . '/' . $pdf_file;
        move_uploaded_file($_FILES['pdf_file']['tmp_name'], $pdf_path);
        $wpdb->insert(
            'wp_meetings',
            array(
                'datetime' => $datetime,
                'dropdown1' => $dropdown1,
                'dropdown2' => $dropdown2,
                'dropdown3' => $dropdown3,
                'pdf_file' => $pdf_file
            ),
            array(
                '%s',
                '%s',
                '%s',
                '%s',
                '%s'
            )
        );
    }
}

所有这一切管理做的是重新加载插件管理页面,而不做任何其他事情或抛出任何错误..这是应该如何做到的呢?

s8vozzvw

s8vozzvw1#

动作为空,并在提交时加载相同的页面,这是没有动作参数或动作参数为空的表单的默认行为。
添加echo管理员网址('admin-post.php')

<form method="post" action="<?php echo admin_url('admin-post.php'); ?>"

相关问题