我一直试图得到一个基本的插件工作,我已经按照什么似乎是流得到的形式张贴到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'
)
);
}
}
所有这一切管理做的是重新加载插件管理页面,而不做任何其他事情或抛出任何错误..这是应该如何做到的呢?
1条答案
按热度按时间s8vozzvw1#
动作为空,并在提交时加载相同的页面,这是没有动作参数或动作参数为空的表单的默认行为。
添加echo管理员网址('admin-post.php')