为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

相关推荐
Web极客码1 天前
WordPress 站点漏洞利用:数据库恶意注入与多重感染的案例分析
数据库·wordpress·网站安全·数据库注入·wordpress漏洞·wordpress安全插件
wodrpress资源分享13 天前
怎么让二级域名绑定到wordpesss指定的页面
wordpress
wodrpress资源分享16 天前
WordPress用 Options Framework 创建一个自定义相册功能
wordpress
wodrpress资源分享16 天前
经典风格的免费wordpress模板
wordpress
wodrpress资源分享1 个月前
推荐12个wordpress企业网站模板
wordpress
Web极客码1 个月前
在WordPress上添加隐私政策页面
大数据·人工智能·wordpress
wodrpress资源分享1 个月前
wordpress免费主题网站
wordpress
云动雨颤1 个月前
Cloudflare子域名设置指南
网络协议·安全·wordpress
wodrpress资源分享1 个月前
三大中文wordpress原创主题汉主题
wordpress
八戒社1 个月前
如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)
前端·css·tensorflow·wordpress