웹사이트 검색

간단한 WordPress FAQ 플러그인을 만드는 방법


"자주 묻는 질문" 섹션은 고객이 질문에 대한 올바른 답변을 제공할 수 있는 훌륭한 도구입니다. 그것은 매우 인기를 얻고 있습니다. 그러나 FAQ는 프리미엄 테마에 통합되는 경우가 많습니다. 그렇다면 무료 테마는 어떻습니까? 다음은 모든 테마에서 작동하는 간단한 FAQ 플러그인을 만드는 튜토리얼입니다. 이 튜토리얼에서는 기본 단계만 다루므로 FAQ 섹션을 사용자 정의하고 자신만의 것으로 만들 수 있습니다!

1단계: 플러그인 생성

시작하려면 "wp-content/plugins" 폴더에 "rc-faq"라는 새 폴더를 만듭니다. 그런 다음 이 폴더 내에 "rc-faq.php"라는 새 파일을 만들고 다음 코드를 배치합니다.

<?php
/*
Plugin Name: RC Faq
Plugin URL: http://remicorson.com/rc-faq
Description: A simple FAQ plugin
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
*/

2단계: FAQ 사용자 정의 게시물 유형 등록

이제 사용자 정의 게시물 유형을 등록해야 합니다. 이 부분이 익숙하지 않다면 Codex를 살펴보시면 됩니다.

/*
 * Register CPT rc_faq
 *
 */
function rc_faq_setup_post_types() {

	$faq_labels =  apply_filters( 'rc_faq_labels', array(
		'name'                => 'FAQs',
		'singular_name'       => 'FAQ',
		'add_new'             => __('Add New', 'rc_faq'),
		'add_new_item'        => __('Add New FAQ', 'rc_faq'),
		'edit_item'           => __('Edit FAQ', 'rc_faq'),
		'new_item'            => __('New FAQ', 'rc_faq'),
		'all_items'           => __('All FAQs', 'rc_faq'),
		'view_item'           => __('View FAQ', 'rc_faq'),
		'search_items'        => __('Search FAQs', 'rc_faq'),
		'not_found'           => __('No FAQs found', 'rc_faq'),
		'not_found_in_trash'  => __('No FAQs found in Trash', 'rc_faq'),
		'parent_item_colon'   => '',
		'menu_name'           => __('FAQs', 'rc_faq'),
		'exclude_from_search' => true
	) );


	$faq_args = array(
		'labels' 			=> $faq_labels,
		'public' 			=> true,
		'publicly_queryable'=> true,
		'show_ui' 			=> true,
		'show_in_menu' 		=> true,
		'query_var' 		=> true,
		'capability_type' 	=> 'post',
		'has_archive' 		=> false,
		'hierarchical' 		=> false,
		'supports' 			=> apply_filters('rc_faq_supports', array( 'title', 'editor' ) ),
	);
	register_post_type( 'rc_faq', apply_filters( 'rc_faq_post_type_args', $faq_args ) );

}

add_action('init', 'rc_faq_setup_post_types');

apply_filters() 함수 사용에 유의하세요. 이를 통해 플러그인 자체를 수정하지 않고도 지원 및 인수를 수정할 수 있습니다.

3단계: FAQ를 표시하기 위한 단축 코드 만들기

이 단계에서는 방문자에게 FAQ를 표시하는 하나의 매개변수만 사용하여 간단한 단축 코드를 생성할 것입니다. FAQ 제목만 나열하고 제목을 클릭할 때만 답변을 표시하는 것이 아이디어입니다.

단축 코드에는 표시할 항목 수를 정의하는 고유한 "제한" 매개변수가 있습니다. 물론 주문, 주문 기준 등의 속성을 추가할 수도 있습니다.

또한 이 단축 코드에는 단축 코드 자체 내에 직접 포함된 자바스크립트 스니펫이 포함되어 있어 단축 코드가 있는 페이지에 있을 때만 자바스크립트가 로드됩니다.

마지막으로 FAQ 콘텐츠를 기본적으로 숨기고 제목을 클릭할 때만 표시합니다.

/*
 * Add [rc_faq limit="-1"] shortcode
 *
 */
function rc_faq_shortcode( $atts, $content = null ) {
	
	extract(shortcode_atts(array(
		"limit" => ''
	), $atts ) );
	
	// Define limit
	if ( $limit ) { 
		$posts_per_page = $limit; 
	} else {
		$posts_per_page = '-1';
	}
	
	ob_start();

	// Create the Query
	$post_type = 'rc_faq';
	$orderby   = 'menu_order';
	$order     = 'ASC';
				
	$query = new WP_Query( array ( 
		'post_type'      => $post_type,
		'posts_per_page' => $posts_per_page,
		'orderby'        => $orderby, 
		'order'          => $order,
		'no_found_rows'  => 1
	) );
	
	//Get post type count
	$post_count = $query->post_count;
	$i = 1;
	
	// Displays FAQ info
	if ( $post_count > 0) :
	
		// Loop
		while ($query->have_posts()) : $query->the_post(); ?>
		
		<h3 class="rc_faq_title"><a href="#" onclick="rc_faq_toggle('rc_faq_<?php echo get_the_ID(); ?>');"><?php the_title(); ?></a></h3>
		<p id="rc_faq_<?php echo get_the_ID(); ?>" style="display: none;"><?php echo get_the_content(); ?></p>

		<?php
		$i++;
		endwhile;
		
	endif;
	
	// Reset query to prevent conflicts
	wp_reset_query(); ?>

	<script type="text/javascript">
	<!--
		function rc_faq_toggle(id) {
			var e = document.getElementById(id);
			e.style.display = ((e.style.display!='none') ? 'none' : 'block');
		}
	//-->
	</script>
	
	<?php
	return ob_get_clean();

}

add_shortcode( "rc_faq", "rc_faq_shortcode" ); ?>

그리고 그게 다야 !

최종 결과

행정의 최종 결과는 다음과 같습니다.

그리고 방문자 측에서는:

간단하지만 효과가 있고 원하는 대로 사용자 정의할 수 있습니다! 이 튜토리얼이 즐거웠기를 바랍니다. 댓글 섹션에서 피드백을 받고 싶습니다!