ホームページ  >  記事  >  CMS チュートリアル  >  掲示板を自動生成するWordPressプラグインの開発方法

掲示板を自動生成するWordPressプラグインの開発方法

PHPz
PHPzオリジナル
2023-09-06 09:09:151183ブラウズ

掲示板を自動生成するWordPressプラグインの開発方法

掲示板を自動生成するWordPressプラグインの開発方法

インタラクティブなWebサイトを作成する場合、掲示板は欠かせません。 WordPress プラットフォームでは、ユーザーがメッセージ機能を追加しやすくするために、メッセージ ボードを自動生成するプラグインを開発できます。この記事では、WordPress プラグイン開発を使用してこの目標を達成する方法を説明し、対応するコード例を示します。

ステップ 1: プラグイン フォルダーとメイン ファイルを作成する

まず、WordPress プラグイン ディレクトリにメッセージ ボード プラグインを配置するフォルダーを作成する必要があります。このフォルダーに「message-board」という名前を付けることができます。

このフォルダーに、「message-board.php」などのメイン ファイルを作成します。このファイルはプラグインのエントリ ファイルになります。

次に、次のコードを「message-board.php」ファイルに追加します。

<?php
/*
Plugin Name: 留言板
Plugin URI: https://www.example.com/message-board
Description: 自动生成留言板的WordPress插件
Version: 1.0
Author: Your Name
Author URI: https://www.example.com
*/

// 在这里编写插件的主要代码

?>

このコードは、プラグインに基本情報を提供し、「plug-in.php」という名前のメッセージ ボードを作成します。

ステップ 2: データベース テーブルを作成する

メッセージ データを保存するには、データベース テーブルを作成する必要があります。これは、WordPress のデータベースを拡張することで実現できます。

「message-board.php」ファイルのメイン コード ブロックに、次のコードを追加します。

// 当插件激活时,调用该函数创建数据库表格
register_activation_hook( __FILE__, 'create_message_board_table' );

function create_message_board_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'message_board';

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        author_name varchar(150) NOT NULL,
        message text NOT NULL,
        submit_date datetime NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}

このコードは、プラグインがアクティブ化されたときに「create_message_board_table」関数を呼び出します。これにより、「wp_message_board」という名前のデータベース テーブルが作成されます。このテーブルには、id、author_name、message、submit_date などの列が含まれています。

ステップ 3: メッセージ ボード ページを作成する

次に、WordPress でメッセージ ボードを表示するページを作成する必要があります。これは、プラグインのメイン ファイルにショートコード関数を追加することで実現できます。

「message-board.php」ファイルのメイン コード セグメントに、次のコードを追加します。

// 注册短代码
add_shortcode( 'message_board', 'display_message_board' );

// 短代码函数
function display_message_board() {
    ob_start();
    ?>

    <h3>留言板</h3>

    <!-- 留言板表单 -->
    <form id="message_form" method="post" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>">
        <input type="hidden" name="action" value="submit_message">
        <label for="author_name">姓名:</label>
        <input type="text" name="author_name" required>
        <br>
        <label for="message">留言:</label>
        <textarea name="message" cols="30" rows="5" required></textarea>
        <br>
        <input type="submit" value="提交">
    </form>

    <!-- 已提交的留言 -->
    <div id="message_list">
        <?php // 调用函数来展示已提交的留言 ?>
        <?php display_submitted_messages(); ?>
    </div>

    <?php
    return ob_get_clean();
}

このコードでは、「message_board」という名前のショートコードを登録し、掲示板を表示するページです。このページには、新しいコメントを送信するためのフォームと、送信されたコメントを表示するためのリストが含まれています。

ステップ 4: フォーム送信データの処理

ユーザーがメッセージを送信するとき、バックエンド処理関数を通じてメッセージ データをデータベースに保存する必要があります。

引き続き、「message-board.php」ファイルのメイン コード セグメントに次のコードを追加します。

// 处理留言提交
add_action( 'admin_post_nopriv_submit_message', 'handle_message_submission' );
add_action( 'admin_post_submit_message', 'handle_message_submission' );

function handle_message_submission() {
    if ( 'POST' === $_SERVER['REQUEST_METHOD'] ) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'message_board';

        $author_name = sanitize_text_field( $_POST['author_name'] );
        $message = sanitize_textarea_field( $_POST['message'] );

        $data = array(
            'author_name' => $author_name,
            'message' => $message,
            'submit_date' => current_time( 'mysql' )
        );

        $wpdb->insert( $table_name, $data );

        wp_redirect( get_permalink() );
        exit;
    }
}

このコードでは、「handle_message_submission」という名前の関数を定義します。フロントエンドフォームの送信を処理します。この関数は、フォームから作成者の名前とメッセージの内容を取得し、そのデータをデータベースに挿入します。最後に、ページを掲示板ページにリダイレクトします。

ステップ 5: 送信されたメッセージを表示する

最後に、送信されたメッセージを表示する関数を作成する必要があります。

引き続き、「message-board.php」ファイルのメイン コード セグメントに次のコードを追加します。

function display_submitted_messages() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'message_board';

    $results = $wpdb->get_results( "SELECT * FROM $table_name" );

    if ( $results ) {
        foreach ( $results as $result ) {
            echo '<div class="message">';
            echo '<p><strong>作者: </strong>' . esc_html( $result->author_name ) . '</p>';
            echo '<p><strong>留言: </strong>' . esc_html( $result->message ) . '</p>';
            echo '<p><strong>时间: </strong>' . esc_html( $result->submit_date ) . '</p>';
            echo '</div>';
        }
    } else {
        echo '暂时没有留言';
    }
}

このコードでは、「display_submitted_messages」という名前の関数を定義します。送信されたコメントをデータベースから取得し、ページに表示します。

これで、掲示板を自動生成するWordPressプラグインが完成しました。 WordPress バックエンドのプラグイン管理でこのプラグインを有効化した後、ページにショートコード「[message_board]」を追加することでメッセージボードを表示できます。

この記事が WordPress プラグインの開発に役立つことを願っています。

以上が掲示板を自動生成するWordPressプラグインの開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。