Una sección de «Preguntas Frecuentes» (FAQ\\’s) es una gran herramienta para dar a sus clientes la respuesta adecuada a sus preguntas. Normalmente las FAQ\\’s están integradas dentro de los temas premium, y ¿qué pasa con temas libres?
Aquí te dejamos un tutorial para crear una plugin sencillo de FAQ´s que funciona con cualquier tema. Este tutorial le dará cobertura a unos pasos básicos para que luego se puede personalizar la sección de preguntas frecuentes y adecuarlo a tu gusto!
Paso 1: Crear el plugin
Para empezar, cree una nueva carpeta en la carpeta «wp-content/plugins» llamado «mis-faqs«. A continuación, cree un nuevo archivo dentro de la carpeta llamada «mis-faqs.php» y coloque este código:
[php] /* Plugin Name: Mis Faqs Plugin URL: https://ilvwp.com/ Description: Un simple plugin de FAQ\\'s Version: 1.0 Author: WP-Jedi Author URI: https://ilvwp.com/ */[/php]
Paso 2: Registre el tipo de entrada personalizada para las FAQ´s
Ahora tenemos que registrar un tipo de entrada personalizada. Si usted no está familiarizado con esta parte, se puede echar un vistazo al Codex. Este código lo debe escribir en el fichero llamado «mis-faqs.php» justo debajo del código anterior.
[php wraplines="yes"] /* <%%KEEPWHITESPACE%%> * Register CPT mis_faqs <%%KEEPWHITESPACE%%> * <%%KEEPWHITESPACE%%> */ function mis_faqs_setup_post_types() { <%%KEEPWHITESPACE%%> $faq_labels = apply_filters( \\'mis_faqs_labels\\', array( <%%KEEPWHITESPACE%%> \\'name\\' => \\'FAQs\\', <%%KEEPWHITESPACE%%> \\'singular_name\\' => \\'FAQ\\', <%%KEEPWHITESPACE%%> \\'add_new\\' => __(\\'Añadir Nuevo\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'add_new_item\\' => __(\\'Nuevo Item\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'edit_item\\' => __(\\'Editar FAQ\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'new_item\\' => __(\\'Nueva FAQ\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'all_items\\' => __(\\'Ver Todas\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'view_item\\' => __(\\'Ver FAQ\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'search_items\\' => __(\\'Buscar FAQs\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'not_found\\' => __(\\'No se han encontrado FAQs\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'not_found_in_trash\\' => __(\\'No hay FAQs en la papelera\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'parent_item_colon\\' => \\'\\', <%%KEEPWHITESPACE%%> \\'menu_name\\' => __(\\'FAQs\\', \\'mis_faqs\\'), <%%KEEPWHITESPACE%%> \\'exclude_from_search\\' => true <%%KEEPWHITESPACE%%> ) ); <%%KEEPWHITESPACE%%> $faq_args = array( <%%KEEPWHITESPACE%%> \\'labels\\' => $faq_labels, <%%KEEPWHITESPACE%%> \\'public\\' => true, <%%KEEPWHITESPACE%%> \\'publicly_queryable\\'=> true, <%%KEEPWHITESPACE%%> \\'show_ui\\' => true, <%%KEEPWHITESPACE%%> \\'show_in_menu\\' => true, <%%KEEPWHITESPACE%%> \\'query_var\\' => true, <%%KEEPWHITESPACE%%> \\'capability_type\\' => \\'post\\', <%%KEEPWHITESPACE%%> \\'has_archive\\' => false, <%%KEEPWHITESPACE%%> \\'hierarchical\\' => false, <%%KEEPWHITESPACE%%> \\'supports\\' => apply_filters(\\'mis_faqs_supports\\', array( \\'title\\', \\'editor\\' ) ), <%%KEEPWHITESPACE%%> ); <%%KEEPWHITESPACE%%> register_post_type( \\'mis_faqs\\', apply_filters( \\'mis_faqs_post_type_args\\', $faq_args ) ); } add_action(\\'init\\', \\'mis_faqs_setup_post_types\\');[/php]
Ten en cuenta que el uso de la función apply_filters () le permite modificar ciertos argumentos sin modificar el propio plugin.
Paso 3: Crear un Código corto (ShortCode) Para mostrar FAQs
Este paso es donde vamos a crear un shortcode con un solo parámetro que mostrará las preguntas más frecuentes a su visitante. La idea es hacer una lista de títulos y mostrar las respuestas sólo cuando se hace clic en el título.
El shortcode tendrá un parámetro único «límite» que define el número de elementos a mostrar. Además, contiene un fragmento de código JavaScript incluido directamente en el propio código corto para que el javascript sólo cargue cuando se muestre la página que está usando el shortcode.
/* * Add [mis_faqs limit="-1"] shortcode * */ function mis_faqs_shortcode( $atts, $content = null ) { <%%KEEPWHITESPACE%%> extract(shortcode_atts(array( <%%KEEPWHITESPACE%%> "limit" => \\'\\' <%%KEEPWHITESPACE%%> ), $atts)); <%%KEEPWHITESPACE%%> // Definir el lte <%%KEEPWHITESPACE%%> if( $limit ) { <%%KEEPWHITESPACE%%> $posts_per_page = $limit; <%%KEEPWHITESPACE%%> } else { <%%KEEPWHITESPACE%%> $posts_per_page = \\'-1\\'; <%%KEEPWHITESPACE%%> } <%%KEEPWHITESPACE%%> ob_start(); // Crear la consulta <%%KEEPWHITESPACE%%> $post_type = \\'mis_faqs\\'; <%%KEEPWHITESPACE%%> $orderby = \\'menu_order\\'; <%%KEEPWHITESPACE%%> $order = \\'ASC\\'; <%%KEEPWHITESPACE%%> $query = new WP_Query( array ( <%%KEEPWHITESPACE%%> \\'post_type\\' => $post_type, <%%KEEPWHITESPACE%%> \\'posts_per_page\\' => $posts_per_page, <%%KEEPWHITESPACE%%> \\'orderby\\' => $orderby, <%%KEEPWHITESPACE%%> \\'order\\' => $order, <%%KEEPWHITESPACE%%> \\'no_found_rows\\' => 1 <%%KEEPWHITESPACE%%> ) <%%KEEPWHITESPACE%%> ); <%%KEEPWHITESPACE%%> // Obtener la cuenta <%%KEEPWHITESPACE%%> $post_count = $query->post_count; <%%KEEPWHITESPACE%%> $i = 1; <%%KEEPWHITESPACE%%> // Mostrar FAQ info <%%KEEPWHITESPACE%%> if( $post_count > 0) : <%%KEEPWHITESPACE%%> // Loop <%%KEEPWHITESPACE%%> while ($query->have_posts()) : $query->the_post(); <%%KEEPWHITESPACE%%> ?> <%%KEEPWHITESPACE%%>
< a href=»#» onclick=»mis_faqs_toggle(\\’mis_faqs_\\’);»>
<%%KEEPWHITESPACE%%>
<%%KEEPWHITESPACE%%> $i ; <%%KEEPWHITESPACE%%> endwhile; <%%KEEPWHITESPACE%%> endif; <%%KEEPWHITESPACE%%> // Iniciar secuencia para evitar conflicts <%%KEEPWHITESPACE%%> wp_reset_query(); <%%KEEPWHITESPACE%%> ?> <%%KEEPWHITESPACE%%> <%%KEEPWHITESPACE%%> <%%KEEPWHITESPACE%%> return ob_get_clean(); } add_shortcode("mis_faqs", "mis_faqs_shortcode"); [/php]
Resultado:
Resultado final en la administración:
Y del lado de los visitantes:
Como ves es bastante sencillo y funciona, también lo puedes personalizar como quieras, te puede servir incluso para otros usos.