From aa974bf5954d0cca2506003a3cd9ec4eb89ed0bc Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 11 May 2026 18:35:55 +0000
Subject: [PATCH] =Transfer to new Registrar system
---
content/faq.php | 421 ++++++++++++++++++++++++++++++----------------------
1 files changed, 243 insertions(+), 178 deletions(-)
diff --git a/content/faq.php b/content/faq.php
index a43268c..222f605 100644
--- a/content/faq.php
+++ b/content/faq.php
@@ -1,187 +1,252 @@
<?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;
-}
\ No newline at end of file
+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');
+// }
+//}
--
Gitblit v1.10.0