| | |
| | | <?php |
| | | // /content/faq.php |
| | | function altr_faq():array |
| | | |
| | | use JVBase\registrar\Registrar; |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | | |
| | | |
| | | add_action('jvbDefineRegistrar', 'altr_faq'); |
| | | add_action('jvbDefineRegistrarFields', 'altr_faq_fields'); |
| | | |
| | | add_action('plugins_loaded', 'altr_faq',1); |
| | | //Add fields later so we can verify taxonomies/post types exist |
| | | add_action('plugins_loaded', 'altr_faq_fields', 2); |
| | | |
| | | add_filter('altr_FaqSchemaDefault', 'altr_faq_schema'); |
| | | add_filter('altr_FaqMetaDefault', 'altr_faq_meta'); |
| | | add_filter('altr_FaqArchiveDefault', 'altr_faq_archive'); |
| | | |
| | | function altr_faq(){ |
| | | if (!class_exists('JVBase\registrar\Registrar')) { |
| | | return; |
| | | } |
| | | $faq = Registrar::forPost('faq', 'FAQ', 'FAQs') |
| | | ->setIcon('question') |
| | | ->make([ |
| | | 'rewrite' => [ |
| | | 'slug' => 'faq', |
| | | 'with_front' => false, |
| | | ], |
| | | 'taxonomies' => [ |
| | | 'section', |
| | | ], |
| | | 'rewrite_taxonomy' => 'section' |
| | | ]) |
| | | ->setAll([ |
| | | 'show_directory', |
| | | 'is_faq' |
| | | ]); |
| | | |
| | | //$directory = $faq->getConfig('directory'); |
| | | |
| | | } |
| | | |
| | | function altr_faq_fields():void |
| | | { |
| | | if (!class_exists('JVBase\registrar\Registrar')) { |
| | | return; |
| | | } |
| | | $faq = Registrar::getInstance('faq'); |
| | | $breadcrumbs = $faq->config('breadcrumbs'); |
| | | $breadcrumbs->setCrumb('section'); |
| | | |
| | | |
| | | $fields = $faq->fields(); |
| | | $fields->addField('section', [ |
| | | 'type' => 'selector', |
| | | 'subtype' => 'taxonomy', |
| | | 'taxonomy' => 'section', |
| | | 'label' => 'FAQ Section', |
| | | ]); |
| | | } |
| | | |
| | | function altr_faq_schema():array |
| | | { |
| | | return [ |
| | | 'singular' => 'FAQ', |
| | | 'plural' => 'FAQs', |
| | | 'dash_description' => 'Manage your answers', |
| | | 'capability_type' => ['faq', 'faqs'], |
| | | 'breadcrumb' => 'FAQ', |
| | | 'dash_title' => 'FAQs', |
| | | 'icon' => 'question', |
| | | 'rewrite_taxonomy' => 'section', |
| | | 'rewrite' => [ |
| | | 'slug' => 'faq', |
| | | 'with_front' => false, |
| | | ], |
| | | 'fields' => [ |
| | | 'post_title' => [ |
| | | 'type' => 'text', |
| | | 'label' => 'Question', |
| | | ], |
| | | 'post_status' => [ |
| | | 'type' => 'radio', |
| | | 'label' => 'Status', |
| | | 'hidden' => true, |
| | | 'options' => [ |
| | | 'publish' => 'Show', |
| | | 'draft' => 'Hide', |
| | | 'trash' => 'Scrap', |
| | | 'delete' => 'Permanently Delete' |
| | | ] |
| | | ], |
| | | 'post_content' => [ |
| | | 'type' => 'textarea', |
| | | 'label' => 'Answer', |
| | | 'quill' => true, |
| | | ], |
| | | ], |
| | | 'single_image' => false, |
| | | 'upload_title' => 'Upload Before & Afters', |
| | | 'seo' => [ |
| | | 'meta' => [ |
| | | 'title' => '{{post_title}} | FAQ', |
| | | 'description' => '{{post_excerpt}}' |
| | | ], |
| | | 'schema' => [ |
| | | 'type' => 'FAQPage', |
| | | 'question' => '{{post_title}}', |
| | | 'answer' => '{{post_excerpt}}', |
| | | ], |
| | | 'archive' => [ |
| | | 'type' => 'FAQPage', |
| | | 'name' => 'Common Questions about Laser Tattoo Removal', |
| | | ], |
| | | ] |
| | | 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebPage\QAPage', |
| | | 'name' => '{{post_title}} | FAQs on {{section.name}}', |
| | | ]; |
| | | } |
| | | |
| | | |
| | | add_action('wp_enqueue_scripts', 'nebDashScripts', 9999); |
| | | function nebDashScripts() { |
| | | global $wp; |
| | | $page = str_replace('dash/', '', $wp->request); |
| | | if ($page === 'settings') { |
| | | wp_enqueue_script('jvb-form'); |
| | | wp_enqueue_script('jvb-tabs'); |
| | | wp_enqueue_script('jvb-populate-form'); |
| | | wp_enqueue_script('jvb-copy-hours'); |
| | | wp_enqueue_script('jvb-quill'); |
| | | wp_enqueue_script('jvb-store'); |
| | | $script = 'function loadSettingsPage() { |
| | | let tabs = new window.jvbTabs(document.querySelector(".replace")); |
| | | let store = new window.jvbStore({ |
| | | name: "options", |
| | | endpoint: "options", |
| | | headers: { |
| | | "action_nonce": jvbSettings.dash, |
| | | } |
| | | }); |
| | | |
| | | let form = new window.jvbForm(store); |
| | | let forms = [ "#hours", "#menu-sections"]; |
| | | let setForms = {}; |
| | | forms.forEach(f => { |
| | | let gotF = document.querySelector(`form${f}`); |
| | | setForms[f] = form.registerForm(gotF); |
| | | |
| | | }); |
| | | |
| | | form.subscribe((event, data) => { |
| | | switch (event) { |
| | | case "form-submit": |
| | | case "form-autosave": |
| | | window.jvbQueue.addToQueue({ |
| | | endpoint: "options", |
| | | headers: { |
| | | "action_nonce": jvbSettings.dash, |
| | | }, |
| | | data: data.changes, |
| | | popup: `Saving options...`, |
| | | title: "Saving Options" |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | } |
| | | document.addEventListener("DOMContentLoaded", ()=>{ |
| | | loadSettingsPage() |
| | | }); |
| | | '; |
| | | $output = wp_add_inline_script('jvb-form', $script, 'after'); |
| | | } elseif ($page === 'dash') { |
| | | wp_enqueue_script('jvb-form'); |
| | | wp_enqueue_script('jvb-store'); |
| | | $script = 'function loadDashPage() { |
| | | |
| | | let store = new window.jvbStore({ |
| | | name: "options", |
| | | endpoint: "options", |
| | | headers: { |
| | | "action_nonce": jvbSettings.dash, |
| | | } |
| | | }); |
| | | |
| | | let form = new window.jvbForm(store); |
| | | let forms = [ "#options"]; |
| | | let setForms = {}; |
| | | forms.forEach(f => { |
| | | let gotF = document.querySelector(`form${f}`); |
| | | setForms[f] = form.registerForm(gotF); |
| | | |
| | | }); |
| | | |
| | | form.subscribe((event, data) => { |
| | | switch (event) { |
| | | case "form-submit": |
| | | case "form-autosave": |
| | | window.jvbQueue.addToQueue({ |
| | | endpoint: "options", |
| | | headers: { |
| | | "action_nonce": jvbSettings.dash, |
| | | }, |
| | | data: data.changes, |
| | | popup: `Saving options...`, |
| | | title: "Saving Options" |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | } |
| | | document.addEventListener("DOMContentLoaded", ()=>{ |
| | | loadDashPage() |
| | | }); |
| | | '; |
| | | // $output = wp_add_inline_script('jvb-form', $script, 'after'); |
| | | } |
| | | function altr_faq_meta():array |
| | | { |
| | | return[ |
| | | 'name' => '{{post_title}} | FAQs {{section.name}}', |
| | | ]; |
| | | } |
| | | |
| | | add_filter('jvbBreadcrumbs', 'altrFAQCrumbs'); |
| | | function altrFAQCrumbs(array $crumbs) { |
| | | if (is_singular(BASE.'faq')) { |
| | | $ID = get_the_ID(); |
| | | $terms = get_the_terms($ID, BASE.'section'); |
| | | if ($terms && !is_wp_error($terms)) { |
| | | $last = array_pop($crumbs); |
| | | $term = $terms[0]; |
| | | $ancestors = get_ancestors($term->term_id, BASE.'section', 'taxonomy'); |
| | | $ancestors = array_reverse($ancestors); |
| | | foreach ($ancestors as $ancestor) { |
| | | $aTerm = get_term($ancestor, BASE.'section'); |
| | | if ($aTerm && !is_wp_error($aTerm)) { |
| | | $crumbs[] = [ |
| | | 'name' => $aTerm->name, |
| | | 'url' => get_term_link($ancestor, BASE.'section') |
| | | ]; |
| | | } |
| | | } |
| | | $crumbs[] = [ |
| | | 'name' => $term->name, |
| | | 'url' => get_term_link($term, BASE.'section') |
| | | ]; |
| | | $crumbs[] = $last; |
| | | } |
| | | } |
| | | return $crumbs; |
| | | } |
| | | function altr_faq_archive(array $defaults):array |
| | | { |
| | | return array_merge($defaults, [ |
| | | 'name' => 'Frequently Asked Questions', |
| | | 'description' => 'Common Questions about Laser Tattoo Removal.' |
| | | ]); |
| | | } |
| | | |
| | | function altr_faq_reference_schema(array $defaults):array |
| | | { |
| | | return $defaults; |
| | | } |
| | | |
| | | |
| | | //function altr_faq():array |
| | | //{ |
| | | // return [ |
| | | // 'singular' => 'FAQ', |
| | | // 'plural' => 'FAQs', |
| | | // 'dash_description' => 'Manage your answers', |
| | | // 'capability_type' => ['faq', 'faqs'], |
| | | // 'breadcrumb' => 'FAQ', |
| | | // 'addCrumb' => 'section', |
| | | // 'show_directory'=> true, |
| | | // 'directory_extra'=> ['section'], |
| | | // 'dash_title' => 'FAQs', |
| | | // 'icon' => 'question', |
| | | // 'rewrite_taxonomy' => 'section', |
| | | // 'rewrite' => [ |
| | | // 'slug' => 'faq', |
| | | // 'with_front' => false, |
| | | // ], |
| | | // 'fields' => [ |
| | | // 'post_title' => [ |
| | | // 'type' => 'text', |
| | | // 'label' => 'Question', |
| | | // ], |
| | | // 'post_status' => [ |
| | | // 'type' => 'radio', |
| | | // 'label' => 'Status', |
| | | // 'hidden' => true, |
| | | // 'options' => [ |
| | | // 'publish' => 'Show', |
| | | // 'draft' => 'Hide', |
| | | // 'trash' => 'Scrap', |
| | | // 'delete' => 'Permanently Delete' |
| | | // ] |
| | | // ], |
| | | // 'post_content' => [ |
| | | // 'type' => 'textarea', |
| | | // 'label' => 'Answer', |
| | | // 'quill' => true, |
| | | // ], |
| | | // ], |
| | | // 'single_image' => false, |
| | | // 'upload_title' => 'Upload Before & Afters', |
| | | // 'seo' => [ |
| | | // 'meta' => [ |
| | | // 'title' => '{{post_title}} | FAQ', |
| | | // 'description' => '{{post_excerpt}}' |
| | | // ], |
| | | // 'schema' => [ |
| | | // 'type' => 'FAQPage', |
| | | // 'question' => '{{post_title}}', |
| | | // 'answer' => '{{post_excerpt}}', |
| | | // ], |
| | | // 'archive' => [ |
| | | // 'type' => 'FAQPage', |
| | | // 'name' => 'Common Questions about Laser Tattoo Removal', |
| | | // ], |
| | | // ] |
| | | // ]; |
| | | //} |
| | | // |
| | | // |
| | | //add_action('wp_enqueue_scripts', 'nebDashScripts', 9999); |
| | | //function nebDashScripts() { |
| | | // global $wp; |
| | | // $page = str_replace('dash/', '', $wp->request); |
| | | // if ($page === 'settings') { |
| | | // wp_enqueue_script('jvb-form'); |
| | | // wp_enqueue_script('jvb-tabs'); |
| | | // wp_enqueue_script('jvb-populate-form'); |
| | | // wp_enqueue_script('jvb-copy-hours'); |
| | | // wp_enqueue_script('jvb-quill'); |
| | | // wp_enqueue_script('jvb-store'); |
| | | // $script = 'function loadSettingsPage() { |
| | | // let tabs = new window.jvbTabs(document.querySelector(".replace")); |
| | | // let store = new window.jvbStore({ |
| | | // name: "options", |
| | | // endpoint: "options", |
| | | // headers: { |
| | | // "action_nonce": jvbSettings.dash, |
| | | // } |
| | | // }); |
| | | // |
| | | // let form = new window.jvbForm(store); |
| | | // let forms = [ "#hours", "#menu-sections"]; |
| | | // let setForms = {}; |
| | | // forms.forEach(f => { |
| | | // let gotF = document.querySelector(`form${f}`); |
| | | // setForms[f] = form.registerForm(gotF); |
| | | // |
| | | // }); |
| | | // |
| | | // form.subscribe((event, data) => { |
| | | // switch (event) { |
| | | // case "form-submit": |
| | | // case "form-autosave": |
| | | // window.jvbQueue.addToQueue({ |
| | | // endpoint: "options", |
| | | // headers: { |
| | | // "action_nonce": jvbSettings.dash, |
| | | // }, |
| | | // data: data.changes, |
| | | // popup: `Saving options...`, |
| | | // title: "Saving Options" |
| | | // }); |
| | | // break; |
| | | // } |
| | | // }); |
| | | // } |
| | | // document.addEventListener("DOMContentLoaded", ()=>{ |
| | | // loadSettingsPage() |
| | | // }); |
| | | // '; |
| | | // $output = wp_add_inline_script('jvb-form', $script, 'after'); |
| | | // } elseif ($page === 'dash') { |
| | | // wp_enqueue_script('jvb-form'); |
| | | // wp_enqueue_script('jvb-store'); |
| | | // $script = 'function loadDashPage() { |
| | | // |
| | | // let store = new window.jvbStore({ |
| | | // name: "options", |
| | | // endpoint: "options", |
| | | // headers: { |
| | | // "action_nonce": jvbSettings.dash, |
| | | // } |
| | | // }); |
| | | // |
| | | // let form = new window.jvbForm(store); |
| | | // let forms = [ "#options"]; |
| | | // let setForms = {}; |
| | | // forms.forEach(f => { |
| | | // let gotF = document.querySelector(`form${f}`); |
| | | // setForms[f] = form.registerForm(gotF); |
| | | // |
| | | // }); |
| | | // |
| | | // form.subscribe((event, data) => { |
| | | // switch (event) { |
| | | // case "form-submit": |
| | | // case "form-autosave": |
| | | // window.jvbQueue.addToQueue({ |
| | | // endpoint: "options", |
| | | // headers: { |
| | | // "action_nonce": jvbSettings.dash, |
| | | // }, |
| | | // data: data.changes, |
| | | // popup: `Saving options...`, |
| | | // title: "Saving Options" |
| | | // }); |
| | | // break; |
| | | // } |
| | | // }); |
| | | // } |
| | | // document.addEventListener("DOMContentLoaded", ()=>{ |
| | | // loadDashPage() |
| | | // }); |
| | | // '; |
| | | //// $output = wp_add_inline_script('jvb-form', $script, 'after'); |
| | | // } |
| | | //} |