我应该如何使用wpdb类在管理仪表板中提交表单?

时间:2015-07-04 作者:Ali

我想为管理员创建一个插件,以便在仪表板中编写每日消息;将其显示在他的网站上。我有两个文件,dailymessage.phpmessageform.php.

在里面dailymessage.php 我有以下代码:

add_action( \'admin_menu\', \'getMessage\' );
function getMessage() {
    add_options_page( "DailyMessage", "DailyMessage", 1, "DailyMessage", "messageForm" );
}
function messageForm() {
    include(\'messageForm.php\' );
}
并且在messageform.php 我有以下代码:

<form method="POST" action="">
    <label for="adminMessage">Your Message : </label>
    <input id="adminMessage" type="text" name="adminMessage" placeholder="Your Message ..." />
    <input type="submit" value="Submit" />
</form>    
<?php
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();        
$sql = "CREATE TABLE messages (
    id mediumint(9) NOT NULL AUTO_INCREMENT,
    message tinytext NOT NULL,
    ) $charset_collate;";        
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql );        
$wpdb->insert( "messages", array(
    "id" => null,
    "message" => $_POST[\'adminMessage\'],
) );
?>
代码不起作用,为什么?我可以在上面这样的表单文件中编写处理表单的代码,还是应该创建另一个页面?

1 个回复
最合适的回答,由SO网友:webtoure 整理而成

如果您不想使用Dashboard Widgets API 您可以使用我快速编造的这个代码片段作为starting point:

function dashboard_daily_post_metabox() {
    add_meta_box( \'wt_id\', \'Daily Post\', \'dashboard_daily_post_process\', \'dashboard\', \'normal\', \'high\' );    
}
add_action( \'wp_dashboard_setup\', \'dashboard_daily_post_metabox\' );

function dashboard_daily_post_process() {
    global $wpdb;
?>
    <form method="post">
        <label>Age <input type="text" name="wt_age" value="<?php echo $wpdb->prefix; ?>" /></label>
        <input type="submit" class="button-primary" value="Save" />
    </form>
<?php
}
正如您所见,您可以访问全球$wpdb 变量,您可以根据需要处理您的请求。

您可以通过将此代码转储到主题的functions.php 文件

结束

相关推荐