ホームページ > CMS チュートリアル > &#&プレス > WordPress プラグインに Q&A 機能を追加する方法

WordPress プラグインに Q&A 機能を追加する方法

王林
リリース: 2023-09-06 10:22:45
オリジナル
795 人が閲覧しました

WordPress プラグインに Q&A 機能を追加する方法

WordPress プラグインに Q&A 機能を追加する方法

WordPress は強力で柔軟なコンテンツ管理システムであり、プラグインはユーザーにさらにカスタマイズ可能な機能を提供します。アクティブなコミュニティやインタラクティブな Web サイトを構築する場合、Q&A 機能を追加することは優れたオプションです。この記事では、WordPress プラグインに Q&A 機能を追加する方法とコード例を紹介します。

  1. カスタム データベース テーブルの作成
    Q&A 機能には、質問と回答のデータを保存する場所が必要です。これは、カスタム データベース テーブルを作成することで実現できます。次に、MySQL データベース テーブル構造の例を示します。
CREATE TABLE wp_questions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question VARCHAR(255),
    answer TEXT,
    user_id INT,
    create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ログイン後にコピー

WordPress では、dbDelta 関数を使用してデータベース テーブルを作成および更新できます。以下は、質問と回答の表を作成するためのサンプル関数です。

function create_question_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'questions';
    $charset_collate = $wpdb->get_charset_collate();
    
    $sql = "CREATE TABLE $table_name (
        id INT AUTO_INCREMENT PRIMARY KEY,
        question VARCHAR(255),
        answer TEXT,
        user_id INT,
        create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    ) $charset_collate;";
    
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
ログイン後にコピー
  1. フロント ページ テンプレートを追加する
    ユーザーが質問したり回答を表示したりできるようにするには、対応するフロント ページ テンプレートが必要です。作成されます。テーマのフォルダーに template-qa.php という名前のファイルを作成し、その中に次のコードを追加します。
<?php
/*
Template Name: Q&A Template
*/

get_header();
?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

        <?php while ( have_posts() ) : the_post(); ?>
        
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <header class="entry-header">
                    <h1 class="entry-title"><?php the_title(); ?></h1>
                </header>

                <div class="entry-content">
                    <?php the_content(); ?>
                </div>
            </article>
            
        <?php endwhile; ?>

        <?php
        global $wpdb;
        $table_name = $wpdb->prefix . 'questions';
        $questions = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY create_date DESC" );

        foreach ( $questions as $question ) {
            echo '<h2>' . $question->question . '</h2>';
            echo '<p>' . $question->answer . '</p>';
        }
        ?>

    </main>
</div>

<?php
get_sidebar();
get_footer(); 
?>
ログイン後にコピー

バックグラウンドで新しいページを作成し、 Q&A テンプレートをページ テンプレートとして使用します。

  1. 質問送信と回答送信の機能を追加します
    フロントページに、ユーザーが質問を送信できるフォームを追加します。次のコード サンプルを使用できます:
<form action="" method="post">
    <label for="question">问题:</label>
    <input type="text" name="question" id="question">
    <input type="submit" value="提交问题">
</form>

<?php
if ( isset( $_POST['question'] ) && $_POST['question'] != '' ) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'questions';
    $question = sanitize_text_field( $_POST['question'] );
    $user_id = get_current_user_id();
    
    $wpdb->insert( $table_name, array(
        'question' => $question,
        'user_id' => $user_id
    ) );
}
?>
ログイン後にコピー

同様に、管理者または他のユーザーが質問に回答できるようにするには、次のコード サンプルを追加できます:

<h2>回答问题:</h2>

<form action="" method="post">
    <textarea name="answer"></textarea>
    <input type="submit" value="提交答案">
</form>

<?php
if ( isset( $_POST['answer'] ) && $_POST['answer'] != '' ) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'questions';
    $answer = sanitize_textarea_field( $_POST['answer'] );
    $question_id = 1; // 假设这是问题的ID
    
    $wpdb->update( $table_name, array(
        'answer' => $answer
    ), array(
        'id' => $question_id
    ) );
}
?>
ログイン後にコピー

これは必要に応じて拡張できる単純な例です。

上記の手順により、WordPress プラグインに質問と回答機能を追加できます。この記事がお役に立てば幸いです。また、アクティブなコミュニティや Web サイトの構築が成功することを願っています。

以上がWordPress プラグインに Q&A 機能を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート