Maison >Tutoriel CMS >WordPresse >Comment développer un plugin WordPress qui génère automatiquement un système de questions et réponses

Comment développer un plugin WordPress qui génère automatiquement un système de questions et réponses

王林
王林original
2023-09-05 15:52:461229parcourir

Comment développer un plugin WordPress qui génère automatiquement un système de questions et réponses

Comment développer un plugin WordPress qui génère automatiquement un système de questions-réponses

Introduction :
À l'ère d'Internet moderne, les sites Web de questions-réponses deviennent de plus en plus populaires. Afin de répondre aux besoins des utilisateurs en matière de questions et réponses, cet article présentera comment développer un plug-in WordPress qui génère automatiquement un système de questions et réponses. Avec ce plugin, vous pouvez facilement créer une plateforme de questions-réponses pour rendre votre site Web plus interactif et attrayant.

Étape 1 : Créer un type de publication personnalisé (Post Type)
Dans WordPress, un type de publication personnalisé est une fonctionnalité qui peut étendre les publications et les pages par défaut. Nous devons créer un type de données personnalisé appelé « Question ».

function create_question_post_type() {
  $labels = array(
    'name' => 'Questions',
    'singular_name' => 'Question',
    'add_new' => 'Add New',
    'add_new_item' => 'Add New Question',
    'edit_item' => 'Edit Question',
    'new_item' => 'New Question',
    'view_item' => 'View Question',
    'search_items' => 'Search Questions',
    'not_found' => 'No questions found',
    'not_found_in_trash' => 'No questions found in trash',
    'parent_item_colon' => '',
    'menu_name' => 'Questions'
  );

  $args = array(
    'labels' => $labels,
    'public' => true,
    'has_archive' => true,
    'rewrite' => array('slug' => 'questions'),
    'supports' => array('title', 'editor', 'author')
  );

  register_post_type('question', $args);
}

add_action('init', 'create_question_post_type');

Étape 2 : Créer des champs méta pour les questions et réponses
Nous devons ajouter des champs d'informations supplémentaires aux questions et réponses, comme la catégorie de la question, l'auteur de la réponse, etc. En ajoutant des métachamps, nous pouvons ajouter et gérer ces champs d'informations supplémentaires lors de la modification des questions et réponses.

function add_question_meta_fields() {
  add_meta_box('question_category', 'Category', 'question_category_callback', 'question', 'side', 'default');
}

function question_category_callback($post) {
  $value = get_post_meta($post->ID, 'question_category', true);
  echo '<input type="text" name="question_category" value="' . esc_attr($value) . '" />';
}

function save_question_meta_fields($post_id) {
  if (array_key_exists('question_category', $_POST)) {
    update_post_meta(
      $post_id,
      'question_category',
      sanitize_text_field($_POST['question_category'])
    );
  }
}

add_action('add_meta_boxes_question', 'add_question_meta_fields');
add_action('save_post_question', 'save_question_meta_fields');

Étape 3 : Créer un modèle de système de questions-réponses
Nous devons créer un modèle de système de questions-réponses pour afficher les questions et les réponses. Nous pouvons y parvenir en utilisant les fichiers modèles de WordPress (par exemple single-question.php).

<?php /* Template name: Question Template */ ?>

<?php get_header(); ?>

<div id="primary">
  <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>

        <?php $answers = get_post_meta(get_the_ID(), 'answers', true); ?>
        <?php if (!empty($answers)): ?>
          <section class="answers">
            <h2>Answers</h2>
            <ul>
              <?php foreach ($answers as $answer): ?>
                <li><?php echo $answer; ?></li>
              <?php endforeach; ?>
            </ul>            
          </section>
        <?php endif; ?>
      </article>

    <?php endwhile; ?>

  </main>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Quatrième étape : créer un formulaire de soumission et d'affichage de questions-réponses
Nous devons créer un formulaire frontal à travers lequel les utilisateurs peuvent soumettre des questions et des réponses et les enregistrer dans la base de données. Nous devons ensuite afficher ces questions et réponses dans le modèle.

function question_form_shortcode() {
  ob_start(); ?>

  <form id="question-form" method="post">
    <label for="question-title">Question Title</label>
    <input type="text" id="question-title" name="question-title" required>

    <label for="question-content">Question Content</label>
    <textarea id="question-content" name="question-content" required></textarea>

    <label for="answer-content">Your Answer</label>
    <textarea id="answer-content" name="answer-content" required></textarea>

    <input type="submit" value="Submit">
  </form>

  <?php return ob_get_clean();
}

add_shortcode('question_form', 'question_form_shortcode');

function save_question_and_answer() {
  if (isset($_POST['question-title']) && isset($_POST['question-content']) && isset($_POST['answer-content'])) {
    $question_title = sanitize_text_field($_POST['question-title']);
    $question_content = wp_kses_post($_POST['question-content']);
    $answer_content = wp_kses_post($_POST['answer-content']);

    $question_id = wp_insert_post(array(
      'post_title' => $question_title,
      'post_content' => $question_content,
      'post_type' => 'question',
      'post_status' => 'publish'
    ));

    $answers = get_post_meta($question_id, 'answers', true);
    $answers[] = $answer_content;
    update_post_meta($question_id, 'answers', $answers);
  }
}

add_action('init', 'save_question_and_answer');

Conclusion :
Avec les conseils de cet article, vous pouvez développer un plug-in WordPress qui génère automatiquement un système de questions et réponses. Ce plug-in peut vous aider à créer facilement une plateforme de questions-réponses pour augmenter l'interactivité et l'attraction. Vous pouvez ajouter des fonctionnalités supplémentaires et personnaliser les styles en fonction de vos utilisateurs et de votre site Web. Je vous souhaite du succès dans votre développement!

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!

Déclaration:
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