Completed FAQ postype with category slug

PHOTO EMBED

Fri Sep 13 2024 06:08:21 GMT+0000 (Coordinated Universal Time)

Saved by @hamzahanif192

function create_faqs()
{
	$labels = array(
		'name' => _x('FAQs', 'Post Type General Name', 'textdomain'),
		'singular_name' => _x('FAQ', 'Post Type Singular Name', 'textdomain'),
		'menu_name' => _x('FAQs', 'Admin Menu text', 'textdomain'),
		'name_admin_bar' => _x('FAQs', 'Add New on Toolbar', 'textdomain'),
		'archives' => __('FAQs Archives', 'textdomain'),
		'attributes' => __('FAQs Attributes', 'textdomain'),
		'parent_item_colon' => __('Parent FAQs:', 'textdomain'),
		'all_items' => __('All FAQs', 'textdomain'),
		'add_new_item' => __('Add New FAQs', 'textdomain'),
		'add_new' => __('Add New', 'textdomain'),
		'new_item' => __('New FAQs', 'textdomain'),
		'edit_item' => __('Edit FAQs', 'textdomain'),
		'update_item' => __('Update FAQs', 'textdomain'),
		'view_item' => __('View FAQs', 'textdomain'),
		'view_items' => __('View FAQs', 'textdomain'),
		'search_items' => __('Search FAQs', 'textdomain'),
		'not_found' => __('Not found', 'textdomain'),
		'not_found_in_trash' => __('Not found in Trash', 'textdomain'),
		'featured_image' => __('Featured Image', 'textdomain'),
		'set_featured_image' => __('Set featured image', 'textdomain'),
		'remove_featured_image' => __('Remove featured image', 'textdomain'),
		'use_featured_image' => __('Use as featured image', 'textdomain'),
		'insert_into_item' => __('Insert into FAQs', 'textdomain'),
		'uploaded_to_this_item' => __('Uploaded to this FAQs', 'textdomain'),
		'items_list' => __('FAQs list', 'textdomain'),
		'items_list_navigation' => __('FAQs list navigation', 'textdomain'),
		'filter_items_list' => __('Filter FAQs list', 'textdomain'),
	);
	$rewrite = array(
		'slug' => 'faqS',
		'with_front' => true,
		'pages' => true,
		'feeds' => true,
	);
	$args = array(
		'label' => __('FAQs', 'textdomain'),
		'description' => __('', 'textdomain'),
		'labels' => $labels,
		'menu_icon' => 'dashicons-format-status',
		'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'page-attributes', 'post-formats', 'custom-fields'),
		'taxonomies' => array(),
		'public' => true,
		'show_ui' => true,
		'show_in_menu' => true,
		'menu_position' => 5,
		'show_in_admin_bar' => true,
		'show_in_nav_menus' => true,
		'can_export' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'exclude_from_search' => true,
		'show_in_rest' => true,
		'publicly_queryable' => true,
		'capability_type' => 'post',
		'rewrite' => $rewrite,
	);
	register_post_type('faqs', $args);
	register_taxonomy('faqs_category', 'faqs', array('hierarchical' => true, 'label' => 'Category', 'query_var' => true, 'rewrite' => array('slug' => 'faqs-category')));
}
add_action('init', 'create_faqs', 0);






function faq_loops($atts) {
    // Default attributes.
    $default = array(
        'category' => '',
    );
    // Merge user-defined attributes with defaults.
    $button_attrs = shortcode_atts($default, $atts);

    // Argument to fetch FAQs based on category.
    $arg = array(
        'post_type' => 'faqs',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'faqs_category',
                'field'    => 'slug',
                'terms'    => $button_attrs['category'], // Use category attribute passed in shortcode
                // 'operator' => 'IN',
            ),
        ),
    );
// print_r($arg);
    // Display FAQs
    $faqsPost = new WP_Query($arg);

    ?>
    <div id="mainfaqs" class="faq-list">
        <?php if ($faqsPost->have_posts()) : ?>
            <?php while ($faqsPost->have_posts()) : $faqsPost->the_post(); ?>
			<div class="faq">
                <div class="faq__question">
                    <div class="faq__ttl "><?php the_title(); ?></div>
                    <div class="faq__close"></div>
                </div>
                <div class="faq__answer" style="display: none; transition: max-height 0.3s ease;">
                    <div class="faq__txt" style="  ">
                        <?php the_content(); ?>
                    </div>
                </div>
            </div>
        <?php
        $x++;

    ?>

            <?php endwhile; ?>
        <?php else : ?>
            <p>No FAQs found in this category.</p>
        <?php endif; ?>
    </div>
    <?php
    wp_reset_postdata();
}
add_shortcode('mainfaqs', 'faq_loops');

// pass shortcode like this: [mainfaqs category="mainhome"]





//jquery


jQuery(function () {
  jQuery(".faq__question").on('click', function () {
      let box = jQuery(this).closest(".faq");
      let openBox = jQuery(".faq_active");

      // Check if the clicked FAQ is not the currently open one
      if (box.hasClass('faq_active')) {
          // If it's the same one, just toggle it
          box.find('.faq__answer').slideUp(300);
          box.removeClass('faq_active');
      } else {
          // Otherwise, close the currently open FAQ and open the new one
          openBox.find('.faq__answer').slideUp(300);
          openBox.removeClass('faq_active');
          
          box.find('.faq__answer').slideDown(300);
          box.addClass('faq_active');
      }
  });
});
content_copyCOPY