Rumah  >  Artikel  >  Tutorial CMS  >  Bagaimana untuk membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik

Bagaimana untuk membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik

王林
王林asal
2023-09-05 15:52:461225semak imbas

Bagaimana untuk membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik

Cara membangunkan pemalam WordPress yang menjana sistem Soal Jawab secara automatik

Pengenalan:
Dalam era Internet moden, tapak web Soal Jawab semakin popular. Untuk memenuhi keperluan pengguna untuk soalan dan jawapan, artikel ini akan memperkenalkan cara membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik. Dengan pemalam ini, anda boleh membuat platform Soal Jawab dengan mudah untuk menjadikan tapak web anda lebih interaktif dan menarik.

Langkah 1: Buat jenis siaran tersuai (Jenis Siaran)
Dalam WordPress, jenis siaran tersuai ialah ciri yang boleh memanjangkan siaran dan halaman lalai. Kita perlu mencipta jenis data tersuai yang dipanggil "Soalan".

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');

Langkah 2: Cipta medan meta untuk soalan dan jawapan
Kami perlu menambah beberapa medan maklumat tambahan pada soalan dan jawapan, seperti kategori soalan, pengarang jawapan, dsb. Dengan menambahkan medan meta, kami boleh menambah dan mengurus medan maklumat tambahan ini semasa mengedit soalan dan jawapan.

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');

Langkah 3: Buat templat sistem Soal Jawab
Kami perlu mencipta templat sistem Soal Jawab untuk memaparkan soalan dan jawapan. Kita boleh mencapai ini menggunakan fail templat WordPress (cth. 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(); ?>

Langkah Empat: Cipta Borang Penyerahan dan Paparan Soal Jawab
Kami perlu mencipta borang bahagian hadapan di mana pengguna boleh menghantar soalan dan jawapan serta menyimpannya ke pangkalan data. Kami kemudiannya perlu memaparkan soalan dan jawapan ini dalam templat.

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');

Kesimpulan:
Dengan panduan artikel ini, anda boleh membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik. Pemalam ini boleh membantu anda mencipta platform Soal Jawab dengan mudah untuk meningkatkan interaktiviti dan daya tarikan. Anda boleh menambah ciri tambahan dan menyesuaikan gaya untuk memenuhi keperluan pengguna anda dan tapak anda. Saya doakan anda berjaya dalam pembangunan anda!

Atas ialah kandungan terperinci Bagaimana untuk membangunkan pemalam WordPress yang menjana sistem soal jawab secara automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn