Maison > Tutoriel CMS > WordPresse > le corps du texte

Comment ajouter une fonctionnalité Q&A à votre plugin WordPress

王林
Libérer: 2023-09-06 10:22:45
original
789 Les gens l'ont consulté

Comment ajouter une fonctionnalité Q&A à votre plugin WordPress

Comment ajouter une fonctionnalité Q&A au plugin WordPress

WordPress est un système de gestion de contenu puissant et flexible, tandis que les plugins offrent aux utilisateurs des fonctionnalités plus personnalisables. Lors de la création d’une communauté active ou d’un site Web interactif, l’ajout d’une fonctionnalité de questions-réponses est une excellente option. Cet article explique comment ajouter une fonctionnalité de questions-réponses à un plugin WordPress et donne quelques exemples de code.

  1. Créer des tables de base de données personnalisées
    La fonctionnalité Q&A nécessite un emplacement pour stocker les données pour les questions et réponses. Ceci peut être réalisé en créant une table de base de données personnalisée. Voici un exemple de structure de table de base de données 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
);
Copier après la connexion

Dans WordPress, vous pouvez utiliser la fonction dbDelta pour créer et mettre à jour des tables de base de données. Voici un exemple de fonction pour créer un tableau de questions et réponses : 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 );
}
Copier après la connexion
  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(); 
?>
Copier après la connexion

在后台,创建一个新的页面,并选择Q&A Template

<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
    ) );
}
?>
Copier après la connexion

    Ajouter un modèle de page d'accueil
      Afin de permettre aux utilisateurs de poser des questions et d'afficher les réponses, un modèle de page d'accueil correspondant doit être créé. Vous pouvez créer un fichier appelé template-qa.php dans le dossier du thème et y ajouter le code suivant :

    1. <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
          ) );
      }
      ?>
      Copier après la connexion
      En arrière-plan, créez une nouvelle page et sélectionnez Q&A Template comme modèle de page.

      Ajoutez la fonction de soumission de questions et de soumission de réponses

      Sur la première page, ajoutez un formulaire pour permettre aux utilisateurs de soumettre des questions. L'exemple de code suivant peut être utilisé :

      rrreee

      De même, pour permettre aux administrateurs ou à d'autres utilisateurs de répondre aux questions, l'exemple de code suivant peut être ajouté : 🎜rrreee🎜 Veuillez noter qu'il ne s'agit que d'un exemple simple et qu'il peut être étendu si nécessaire. . 🎜🎜En suivant les étapes ci-dessus, vous pouvez ajouter la fonction de questions et réponses au plug-in WordPress. J'espère que cet article vous a été utile et je vous souhaite du succès dans la création d'une communauté ou d'un site Web actif ! 🎜

      Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal