From 9bbeea742424837fb58207d88e10dbca0b2cae04 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 03 May 2026 22:04:17 +0000
Subject: [PATCH] =SEO Field registration and formatting
---
inc/registrar/Fields.php | 190 ++++++++++++++++-------------------------------
1 files changed, 65 insertions(+), 125 deletions(-)
diff --git a/inc/registrar/Fields.php b/inc/registrar/Fields.php
index ada4615..f310a3f 100644
--- a/inc/registrar/Fields.php
+++ b/inc/registrar/Fields.php
@@ -1,6 +1,8 @@
<?php
namespace JVBase\registrar;
+use JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness;
+use JVBase\managers\SEO\render\Thing\Thing;
use JVBase\registrar\fields\Field;
use JVBase\registrar\fields\GroupedField;
use JVBase\registrar\fields\OptionsField;
@@ -267,159 +269,97 @@
protected function addReviewField(?string $label = null):void
{
- $this->addField(
- 'reviews',
- [
- 'type' => 'repeater',
- 'add_label' => 'name',
- 'label' => $label ?: 'Reviews',
- 'fields' => [
- 'name' => [
- 'type' => 'text',
- 'label' => 'Reviewer Name',
- ],
- 'review' => [
- 'type' => 'textarea',
- 'quill' => false,
- 'label' => 'Review',
- ],
- 'rating' => [
- 'type' => 'select',
- 'label' => 'Rating',
- 'options' => [
- 'none' => 'Not Given',
- '0.5' => '0.5',
- '1' => '1',
- '1.5' => '1.5',
- '2' => '2',
- '2.5' => '2.5',
- '3' => '3',
- '3.5' => '3.5',
- '4' => '4',
- '4.5' => '4.5',
- '5' => '5',
- ],
- 'default' => 'none'
- ],
- 'date' => [
- 'type' => 'date',
- 'label' => 'Date of Review',
- ],
- 'url' => [
- 'type' => 'url',
- 'label' => 'Link to Review (optional)',
- ],
- ],
- 'section' => 'seo'
- ]
- );
+ $biz = new LocalBusiness();
+ $biz->setReviewField($this);
}
protected function addAlternateNameField():void
{
- $this->addField(
- 'alternate_name',
- [
- 'type' => 'repeater',
- 'label' => 'Alternate Name',
- 'fields' => [
- 'name' => [
- 'type' => 'text',
- 'label' => 'Name',
- ]
- ],
- 'section' => 'seo'
- ]
- );
+ $thing = new Thing();
+ $thing->setAlternateNameField($this);
}
protected function addKeywordsField():void
{
- $this->addField(
- 'keywords',
- [
- 'type' => 'repeater',
- 'label' => 'Keywords',
- 'fields' => [
- 'keyword' => [
- 'type' => 'text',
- 'label' => 'Keyword',
- ],
- ],
- 'default' => $labels ?? [ 'Edmonton tattoos', 'Edmonton tattoo artist', 'Edmonton tattooist' ],
- 'section' => 'seo',
- 'quickEdit' => true,
- ]
- );
+ $thing = new LocalBusiness();
+ $thing->setKeywordsField($this);
}
protected function addOutsidePhotoField():void
{
- $this->addField(
- 'outside_photo',
- [
- 'type' => 'image',
- 'limit' => 1,
- 'label' => __('Outside Photo', 'jvb')
- ]
- );
+ $business = new LocalBusiness();
+ $business->setPhotoField($this);
}
protected function addSloganField():void
{
- $this->addField(
- 'slogan',
- [
- 'type' => 'text',
- 'label' => __('Tagline or Slogan', 'jvb')
- ]
- );
+ $business = new LocalBusiness();
+ $business->setSloganField($this);
}
protected function addPaymentField():void
{
- $this->addField(
- 'payment_accepted',
- [
- 'type' => 'set',
- 'label' => __('Payment Accepted', 'jvb'),
- 'options' => [
- 'Cash' => 'Cash',
- 'Credit Card' => 'Credit Card',
- 'Debit' => 'Debit',
- 'Google Pay' => 'Google Pay',
- 'Apple Pay' => 'Apple Pay',
- 'PayPal' => 'PayPal',
- 'Interac' => 'Interac',
- 'AMEX' => 'AMEX',
- ],
- ]
- );
+ $business = new LocalBusiness();
+ $business->setPaymentAcceptedField($this);
}
protected function addAmenitiesField():void
{
+ $business = new LocalBusiness();
+ $business->setAmenityFeatureField($this);
+ }
+ protected function addCredentialsField():void
+ {
$this->addField(
- 'amenities',
+ 'credentials',
[
'type' => 'set',
- 'label' => __('Amenities', 'jvb'),
- 'options' => [
- 'Wheelchair Accessible' => 'Wheelchair Accessible',
- 'Free Parking' => 'Free Parking',
- 'Private Rooms' => 'Private Rooms',
- 'Air Conditioning' => 'Air Conditioning',
- 'WiFi' => 'WiFi',
- 'Gender Neutral Restroom' => 'Gender Neutral Restroom',
- 'LGBTQ+ Friendly' => 'LGBTQ+ Friendly',
- 'Sterilization Room' => 'Sterilization Room',
- 'Refreshments Available' => 'Refreshments Available',
- 'Street Level Access' => 'Street Level Access',
- 'Single Use Needles' => 'Single Use Needles',
- 'Consultation Room' => 'Consultation Room',
- 'Aftercare Products Available' => 'Aftercare Products Available',
- 'Walk-Ins Welcome' => 'Walk-Ins Welcome',
+ 'label' => __('Credentials', 'jvb'),
+ 'options'=> [
+ 'WHMIS 2015' => 'WHMIS 2015',
+ 'Tattoo and Piercing Safety Standards' => 'Tattoo and Piercing Safety Standards',
+ 'Bloodborne Pathogens and Infection Control' => 'Bloodborne Pathogens and Infection Control',
+ 'First Aid Training' => 'First Aid Training',
]
]
);
}
+ protected function addPermanentlyCloseField():void
+ {
+ $business = new LocalBusiness();
+ $business->setDissolutionDateField($this);
+ }
+
+ protected function addHoursField():void
+ {
+ $business = new LocalBusiness();
+ $business->setOpeningHoursSpecificationField($this);
+ }
+
+ protected function addRateField():void
+ {
+ $this->addField('rate',
+ [
+ 'type' => 'text',
+ 'subtype' => 'number',
+ 'label' => __('Hourly Rate', 'jvb')
+ ]);
+ }
+
+ protected function addAwardsField():void
+ {
+ $business = new LocalBusiness();
+ $business->setAwardField($this);
+ }
+
+ protected function addRatingsField():void
+ {
+ $business = new LocalBusiness();
+ $business->setAggregateRatingField($this);
+ }
+
+ protected function addServicesField():void
+ {
+ $business = new LocalBusiness();
+ $business->setHasOfferCatalogField($this);
+ }
}
--
Gitblit v1.10.0