Home  >  Article  >  CMS Tutorial  >  How to add Q&A functionality to your WordPress plugin

How to add Q&A functionality to your WordPress plugin

王林
王林Original
2023-09-06 10:22:45701browse

How to add Q&A functionality to your WordPress plugin

How to add Q&A function to WordPress plug-in

WordPress is a powerful and flexible content management system, and plug-ins provide users with more customizable functions . When building an active community or an interactive website, adding a Q&A feature is a great option. This article will introduce how to add Q&A functionality to a WordPress plugin and give some code examples.

  1. Create a custom database table
    The Q&A function needs a place to store question and answer data. This can be achieved by creating a custom database table. The following is an example MySQL database table structure:
CREATE TABLE wp_questions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question VARCHAR(255),
    answer TEXT,
    user_id INT,
    create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

In WordPress, you can use the dbDelta function to create and update database tables. The following is a sample function for creating a question and answer table:

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. Add a front page template
    In order to allow users to ask questions and view answers, a corresponding front page template needs to be created. You can create a file named template-qa.php in the theme's folder and add the following code in it:
<?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(); 
?>

In the background, create a new page , and select Q&A Template as the page template.

  1. Add the function of question submission and answer submission
    In the front page, add a form to allow users to submit questions. The following code sample can be used:
<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
    ) );
}
?>

Likewise, to allow administrators or other users to answer questions, the following code sample can be added:

<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
    ) );
}
?>

Please note that this is just a simple Examples can be extended as needed.

Through the above steps, you can add the question and answer function to the WordPress plug-in. I hope this article was helpful and I wish you success in building an active community or website!

The above is the detailed content of How to add Q&A functionality to your WordPress plugin. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn