为wordpress自定义一个留言表单并可以在后台进行管理的实现方法

要为WordPress添加留言表单功能并实现后台管理,你可以按照以下步骤操作:

  1. 创建留言表单

首先,你需要创建一个留言表单。可以使用插件(如Contact Form 7)或手动编写代码。

使用Contact Form 7插件

安装并激活Contact Form 7插件。

创建一个新表单,添加以下字段:

姓名(单行文本框)

邮箱(邮箱输入框)

电话(单行文本框)

地址(单行文本框)

留言内容(多行文本框)

将生成的短代码插入到页面或文章中。

手动编写代码

如果你更喜欢手动编写代码,可以在主题的functions.php文件中添加以下代码:

复制代码
function custom_contact_form() {
    ob_start(); ?>
    <form action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" method="post">
        <p>
            <label for="name">姓名</label>
            <input type="text" name="name" required>
        </p>
        <p>
            <label for="email">邮箱</label>
            <input type="email" name="email" required>
        </p>
        <p>
            <label for="phone">电话</label>
            <input type="text" name="phone" required>
        </p>
        <p>
            <label for="address">地址</label>
            <input type="text" name="address" required>
        </p>
        <p>
            <label for="message">留言内容</label>
            <textarea name="message" required></textarea>
        </p>
        <p>
            <input type="submit" name="submit" value="提交">
        </p>
    </form>
    <?php
    return ob_get_clean();
}
add_shortcode('custom_contact_form', 'custom_contact_form');

然后在页面或文章中使用[custom_contact_form]短代码来显示表单。

  1. 处理表单提交

在functions.php中添加代码来处理表单提交并将数据保存到数据库中:

复制代码
function handle_form_submission() {
    if (isset($_POST['submit'])) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'custom_messages';

        $name = sanitize_text_field($_POST['name']);
        $email = sanitize_email($_POST['email']);
        $phone = sanitize_text_field($_POST['phone']);
        $address = sanitize_text_field($_POST['address']);
        $message = sanitize_textarea_field($_POST['message']);

        $wpdb->insert(
            $table_name,
            array(
                'name' => $name,
                'email' => $email,
                'phone' => $phone,
                'address' => $address,
                'message' => $message,
                'status' => '未读',
                'created_at' => current_time('mysql')
            )
        );
    }
}
add_action('init', 'handle_form_submission');
  1. 创建数据库表

在functions.php中添加代码来创建数据库表:

复制代码
function create_custom_messages_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_messages';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name tinytext NOT NULL,
        email tinytext NOT NULL,
        phone tinytext NOT NULL,
        address tinytext NOT NULL,
        message text NOT NULL,
        status tinytext NOT NULL,
        created_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'create_custom_messages_table');
  1. 创建后台管理菜单

在functions.php中添加代码来创建后台管理菜单:

复制代码
function custom_messages_menu() {
    add_menu_page(
        '留言管理',
        '留言管理',
        'manage_options',
        'custom-messages',
        'custom_messages_page'
    );
}
add_action('admin_menu', 'custom_messages_menu');

function custom_messages_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_messages';
    $messages = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC");

    echo '<div class="wrap">';
    echo '<h1>留言管理</h1>';
    echo '<table class="wp-list-table widefat fixed striped">';
    echo '<thead><tr><th>ID</th><th>姓名</th><th>邮箱</th><th>电话</th><th>地址</th><th>留言内容</th><th>状态</th><th>操作</th></tr></thead>';
    echo '<tbody>';

    foreach ($messages as $message) {
        echo '<tr>';
        echo '<td>' . esc_html($message->id) . '</td>';
        echo '<td>' . esc_html($message->name) . '</td>';
        echo '<td>' . esc_html($message->email) . '</td>';
        echo '<td>' . esc_html($message->phone) . '</td>';
        echo '<td>' . esc_html($message->address) . '</td>';
        echo '<td>' . esc_html($message->message) . '</td>';
        echo '<td>' . esc_html($message->status) . '</td>';
        echo '<td>
                <a href="' . admin_url('admin.php?page=custom-messages&action=mark_as_read&id=' . $message->id) . '">标记为已读</a> |
                <a href="' . admin_url('admin.php?page=custom-messages&action=mark_as_replied&id=' . $message->id) . '">标记为已回</a> |
                <a href="' . admin_url('admin.php?page=custom-messages&action=delete&id=' . $message->id) . '">删除</a>
              </td>';
        echo '</tr>';
    }

    echo '</tbody>';
    echo '</table>';
    echo '</div>';
}
  1. 处理留言管理操作

在functions.php中添加代码来处理留言管理操作(标记为已读、标记为已回、删除):

复制代码
function handle_custom_messages_actions() {
    if (isset($_GET['action']) && isset($_GET['id'])) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'custom_messages';
        $id = intval($_GET['id']);

        if ($_GET['action'] == 'mark_as_read') {
            $wpdb->update($table_name, array('status' => '已读'), array('id' => $id));
        } elseif ($_GET['action'] == 'mark_as_replied') {
            $wpdb->update($table_name, array('status' => '已回'), array('id' => $id));
        } elseif ($_GET['action'] == 'delete') {
            $wpdb->delete($table_name, array('id' => $id));
        }

        wp_redirect(admin_url('admin.php?page=custom-messages'));
        exit;
    }
}
add_action('admin_init', 'handle_custom_messages_actions');
  1. 样式和脚本

你可以根据需要添加自定义样式和脚本来美化表单和管理页面。

原文

http://www.shadahan.com/jianzhan/7806.html

相关推荐
WordPress学习笔记7 小时前
wordpress大型商城主题
wordpress
syjy22 天前
Polylang Pro WordPress多语言插件使用教程(含下载)
wordpress·wordpress插件
WordPress学习笔记3 天前
镌刻中式美学的高端WordPress主题
大数据·人工智能·wordpress
北漂的老猿3 天前
SEO&网络营销服务WordPress主题
wordpress
WordPress学习笔记3 天前
WordPress多语言外贸独立站
wordpress·wordpress多语言·wordpress独立站
北漂的老猿3 天前
响应式金融企业网站WordPress主题
金融·wordpress
syjy24 天前
WooCommerce Variation Swatches Pro WordPress插件使用教程(含下载)
wordpress·wordpress插件
WordPress学习笔记4 天前
模板业(mobanye)各行各业的网站模板
wordpress
syjy25 天前
(含下载)All in One SEO Pack Pro WordPress插件使用教程
wordpress·wordpress插件
syjy26 天前
WP Smush Pro WordPress插件使用教程(含下载)
wordpress·wordpress插件