<?php
|
/*
|
Plugin Name: Legacy Extension
|
Plugin URI: https://legacytattooremoval.ca/
|
Description: An Extension of JakeVan Base, for Legacy Tattoo Removal.
|
Author: Jake Vanderwerf
|
Version: 1.0.0
|
Author URI: https://jakevan.ca/
|
Textdomain: altr
|
*/
|
|
//PLUGIN STRUCTURE
|
// /content/
|
// art.php
|
// design.php
|
// development.php
|
// _setup.php
|
// strategy.php
|
// writing.php
|
// /dashboard/
|
// _setup.php
|
// /files/
|
// fileManagement.php
|
// /forms/
|
// _setup.php
|
// /login/
|
// _setup.php
|
// /taxonomies/
|
// city.php
|
// form.php
|
// media.php
|
// progress.php
|
// _setup.php
|
// style.php
|
// target.php
|
// theme.php
|
// /users/
|
// client.php
|
// _setup.php
|
// ajakevan.php <-- main plugin file
|
|
if (!defined('ABSPATH')) {
|
exit;
|
}
|
|
use JVBase\managers\CacheManager;
|
|
add_filter('jvb_base', function () {
|
return 'altr_';
|
});
|
|
|
const AJV_DIR = WP_PLUGIN_DIR . '/alegacy';
|
define('AJV_URL', plugin_dir_url(__FILE__));
|
|
add_filter('jvbChildDir', function() {
|
return AJV_DIR;
|
});
|
add_filter('jvbChildUrl', function() {
|
return AJV_URL;
|
});
|
|
require(AJV_DIR . '/content/_setup.php');
|
require(AJV_DIR . '/dashboard/_setup.php');
|
require(AJV_DIR . '/email/_setup.php');
|
require(AJV_DIR . '/forms/_setup.php');
|
require(AJV_DIR . '/login/_setup.php');
|
require(AJV_DIR . '/taxonomies/_setup.php');
|
require(AJV_DIR . '/users/_setup.php');
|
require(AJV_DIR . '/seo.php');
|
//require(AJV_DIR . '/files/fileManagement.php');
|
|
|
/**
|
* Defines base options like:
|
* - directory & Membership
|
* - dashboard
|
* - membership settings (JVB_MEMBERSHIP)
|
* - post types (JVB_CONTENT)
|
* - taxonomies (JVB_TAXONOMY)
|
* - User Roles (JVB_USER)
|
* - enthusiast = (bool) short form for a subscriber-like user that can collect content for reference
|
* - forum = (bool) create a forum
|
* - member_only = (bool) if forum and this is true, creates a member-only forum in the custom dashboard
|
*
|
* as well as central filters for
|
* - rewrite rules
|
* - archive title
|
*/
|
add_filter('jvb_site', 'altr_setup_site');
|
function altr_setup_site():array
|
{
|
return [
|
'icons' => 'light',
|
'is_directory' => true, //as in, a membership directory
|
'directory_label' => ['List', 'Lists'],
|
'has_membership' => false,
|
'has_map' => true,
|
'dashboard' => true,
|
'referrals' => true,
|
'magicLink' => true,
|
'support' => false,
|
'feed_block' => true,
|
'email_notifications' => true,
|
'integrations' => [
|
'bluesky' => true,
|
'cloudflare' => true,
|
'facebook' => true,
|
'maps' => true,
|
'gmb' => true,
|
'helcim' => false,
|
'postmark' => true,
|
'instagram' => true,
|
'square' => false,
|
'umami' => true,
|
],
|
'is_restaurant' => false,
|
'limit_hours' => false,
|
'enthusiast' => false,
|
'favourites' => false, //optional flag to allow enthusiasts, but not favourites
|
];
|
}
|
/**
|
* JVB_MEMBERSHIP defines the structure of the directory
|
* Options include:
|
* - membership_expires = useful if members pay a yearly membership fee
|
* - hide_expired = removes users once membership expired; only used if membership_expires is true
|
* - clip_expired = keeps users once membership expires, but limits the information shown; only used if membership_expires is true
|
* - membership_approval = verified users can approve other users
|
* - term_approval = (bool) verified users can create new terms, but needs approval
|
* - member_only = (array) if empty, open to any registered user. otherwise an array of registered user roles
|
*/
|
//add_filter('jvb_membership', 'altr_setup_membership');
|
//function altr_setup_membership():array
|
//{
|
// return [
|
// 'member_content' => true,
|
// 'can_invite' => ['artist' => ['artist']],
|
// 'member_verified' => true,
|
// 'notifications' => true,
|
// 'forum' => true,
|
// 'member_only' => [ 'artist' ],
|
// 'member_expires' => false,
|
// 'hide_expired' => false,
|
// 'clip_expired' => false,
|
// 'term_approval' => true,
|
// 'can_approve' => [ 'artist' ]
|
// ];
|
//}
|
//
|
//add_filter('jvbLoadingQuips', 'altr_loading_quips');
|
//function altr_loading_quips(array $quips):array
|
//{
|
// return [];
|
//}
|
|
|
add_filter('jvbAboveHeader', 'altr_legacy_header');
|
function altr_legacy_header(string $header):string
|
{
|
return '<p><b>WED - SUN</b> <span class="hide-small"> </span>11<span class="hide-small">:00</span>AM - 6<span class="hide-small">:00</span>PM</p><p>By Appointment<span class="hide-small"> Only</span></p>';
|
}
|
|
|
|
add_filter('jvbMenuExtra', 'altr_contact_nav', 10, 3);
|
function altr_contact_nav(string $nav, string $menuName, array $block):string
|
{
|
if (array_key_exists('attrs', $block)
|
&& array_key_exists('className', $block['attrs'])
|
&& $block['attrs']['className'] === 'is-style-fixed'
|
&& $nav === '') {
|
$call = '<li class="call"><a href="'.jvbPhoneLink(8259257398).'" title="Call Us">'.jvbIcon('phone').'<span class="screen-reader-text">Call Us</span></a></li>';
|
$text = '<li><a href="'.jvbTextLink(8259257398).'" title="Text Us">'.jvbIcon('chat').'<span class="hide-small">825.925.7398</span><sup class="hide-small">PEWU</sup></a></li>';
|
$email = '<li><a href="'.jvbMailToLink(
|
'info@legacytattooremoval.ca',
|
'Contact from Our Website'
|
).'" title="Email Us">'.jvbIcon('envelope').'<span class="hide-small">info@legacytattooremoval.ca</span></a></li>';
|
|
return $call.$text.$email;
|
}
|
if (array_key_exists('attrs', $block)
|
&& array_key_exists('className', $block['attrs'])
|
&& $block['attrs']['className'] === 'is-style-floating'
|
) {
|
return $nav.'<li><ul class="socials">
|
<li>
|
<a href="https://www.facebook.com/LegacyTattooRemoval/" target="_blank" rel="nofollow" title="Find us on Facebook">
|
'.jvbIcon('facebook-logo').'
|
<span class="screen-reader-text">
|
Find us on Facebook
|
</span>
|
</a>
|
</li>
|
<li>
|
<a href="https://www.instagram.com/LegacyTattooRemoval/" target="_blank" rel="nofollow" title="Find us on Instagram">
|
'.jvbIcon('instagram-logo').'
|
<span class="screen-reader-text">
|
Find us on Instagram
|
</span>
|
</a>
|
</li>
|
<li>
|
<a href="https://bsky.app/profile/legacyrebrand.test" target="_blank" rel="nofollow" title="Find us on Bluesky">
|
'.jvbIcon('butterfly').'
|
<span class="screen-reader-text">
|
Find us on Bluesky
|
</span>
|
</a>
|
</li>
|
</ul></li>';
|
}
|
|
return $nav;
|
}
|
|
add_filter('jvbBeforeFooter', 'altr_acknowledgement');
|
function altr_acknowledgement():string
|
{
|
|
return '<p>amiskwacîwâskahikan ᐊᒥᐢᑲᐧᒋᐋᐧᐢᑲᐦᐃᑲᐣ</p><p><a href="https://www.treatysix.org/#comp-lkljqlw1" title="Learn More">Treaty 6 territory</a></p><p>Edmonton, Alberta, Canada</p>';
|
}
|
|
|
add_action('jvbBlockStyles', 'altr_blockStyles');
|
function altr_blockStyles()
|
{
|
register_block_style(
|
'core/list',
|
[
|
'name'=>'blocky',
|
'label' => __('Blocky', 'altr')
|
]
|
);
|
register_block_style(
|
'core/group',
|
[
|
'name'=>'triangle',
|
'label' => __('Triangle', 'altr')
|
]
|
);
|
}
|
|
|
|
function altr_render_core_post_excerpt(array $block, string $content)
|
{
|
|
global $post;
|
if (!has_excerpt($post)) {
|
return '';
|
}
|
$excerpt = $post->post_excerpt;
|
|
$before = is_singular() ? '<span class="tldr" title="Too Long, Didn\'t Read" data-short="TLDR:" data-long="TOO LONG, DIDN\'T READ:">TLDR:</span>' : '';
|
$excerpt = $before.$excerpt;
|
return '<div class="excerpt">'.apply_filters('the_content', $excerpt).'</div>';
|
}
|
|
add_action( 'init', 'altr_add_excerpts_to_pages' );
|
function altr_add_excerpts_to_pages() {
|
add_post_type_support( 'page', 'excerpt' );
|
}
|
|
add_filter('jvbRegisterCustomIcons', 'altr_custom_icons');
|
function altr_custom_icons(array $icons):array
|
{
|
$icons['logo-triangle'] = AJV_DIR . '/assets/icons/triangle.svg';
|
$icons['logo-triangle-fill'] = AJV_DIR . '/assets/icons/triangle-fill.svg';
|
$icons['logo-text'] = AJV_DIR . '/assets/icons/text.svg';
|
$icons['logo-text-only'] = AJV_DIR . '/assets/icons/text-only.svg';
|
$icons['logo-complete'] = AJV_DIR . '/assets/icons/triangle text back.svg';
|
return $icons;
|
}
|
|
add_filter('jvbLoadingIcon', 'altr_loading_icon');
|
function altr_loading_icon():string
|
{
|
return 'logo-triangle';
|
}
|
|
function altr_render_core_site_logo(array $block, string $content):string
|
{
|
$open = $close = '';
|
|
if (!is_home() && !is_front_page()) {
|
$open = '<a href="'.get_home_url().'" rel="home">';
|
$close = '</a>';
|
}
|
return $open.'<span class="logo">'.jvbIcon('logo-triangle').jvbIcon('logo-text-only').'</span>'.$close;
|
}
|
|
add_filter('jvbSummaryHeader', 'altr_progress_summary_header', 10, 2);
|
|
function altr_progress_summary_header(string $title, string $type):string
|
{
|
switch ($type) {
|
case 'progress':
|
return JVB_CONTENT[$type]['plural'];
|
default:
|
$obj = get_queried_object();
|
return '<small>Before & After Laser Tattoo Removal</small><small>'.JVB_TAXONOMY[$type]['singular'].':</small>'.str_replace(JVB_TAXONOMY[$type]['singular'].': ','',$title);
|
}
|
}
|
add_filter('jvbSummaryHeaderExtra', 'altr_progress_summary_header_extra', 10, 2);
|
|
function altr_progress_summary_header_extra(string $title, string $type):string
|
{
|
switch ($type) {
|
case 'progress':
|
return '<p>See real results of tattoos before and after laser tattoo removal.</p><p>Filter results by number of treatments, age of original tattoo, location on body, fading goal, skin type, timeline between treatments, tattoo style, or tattoo subject matter.</p>';
|
}
|
return $title;
|
}
|
|
//add_filter('jvbSummaryDetails', 'altr_summary_details', 10, 2);
|
//function altr_summary_details(array $sections, string $type):array
|
//{
|
// switch ($type) {
|
// case 'progress':
|
// $sections = [
|
// 'summary' => '<p>We recommend spacing treatments out at least 12 weeks apart for best results.</p><p>See the difference at Legacy.</p>'
|
// ];
|
// break;
|
// }
|
// return $sections;
|
//}
|
|
add_filter('the_seo_framework_meta_render_data', 'altr_no_next_archive', 10, 1);
|
function altr_no_next_archive($tags) {
|
if (is_tax() || is_post_type_archive('altr_progress') || is_post_type_archive('altr_terms') || is_post_type_archive('altr_faq')) {
|
if (array_key_exists('next', $tags)) {
|
unset($tags['next']);
|
}
|
}
|
return $tags; // Keep the link for other pages
|
}
|
|
add_filter('jvb_referral_booking_url', 'altr_consult_link');
|
function altr_consult_link(string $link):string
|
{
|
return 'https://legacytattooremoval.janeapp.com/#/staff_member/2/treatment/15/';
|
}
|
|
add_filter('jvb_referral_estimate_url', 'altr_estimate_link');
|
function altr_estimate_link(string $link):string
|
{
|
return 'https://legacytattooremoval.ca/get-an-estimate/';
|
}
|
|
add_filter('jvbLogoIcon', 'altr_logostring');
|
function altr_logostring():string
|
{
|
return 'logo-triangle';
|
}
|
|
add_filter('jvbDefaultIcon', 'altr_default_icon');
|
function altr_default_icon():string
|
{
|
return 'triangle';
|
}
|
|
add_action('init', 'altr_RegisterScripts', 5);
|
|
function altr_RegisterScripts() {
|
wp_enqueue_script(
|
'altr-base',
|
AJV_URL.'assets/js/legacy.js',
|
[],
|
'1.0',
|
[
|
'strategy' => 'defer',
|
'in_footer' => true
|
]
|
);
|
}
|