0
X
Add Snippet To Project
New Project
Add To Existing Project
<?php
/**
* Plugin Name: BogoWorkshop Tools
* Description: Utility toolkit for WooCommerce and site management. Modular admin, split by function.
* Version: 2.0.0
* Author: bogoworkshop
* Text Domain: bogoworkshop-tools
*/
// Exit if accessed directly outside of WordPress.
if (!defined('ABSPATH')) exit;
// Load modular plugin components.
require_once __DIR__ . '/includes/shortcodes.php';
require_once __DIR__ . '/includes/woo-customizations.php';
require_once __DIR__ . '/includes/output-css.php';
//require_once __DIR__ . '/includes/settings-side-menu.php'; // <-- Important for Slide Menu settings
// Admin Page Callbacks: Each settings page is modular and included below.
function bw_tools_settings_general() {
include __DIR__ . '/includes/settings-general.php';
// include __DIR__ . '/includes/functions/source-general.php';
}
function bw_tools_settings_login_visibility() {
include __DIR__ . '/includes/login-visibility/admin-login-visibility.php';
include __DIR__ . '/includes/login-visibility/functions-login-visibility.php';
}
function bw_tools_settings_woocommerce() {
include __DIR__ . '/includes/woocommerce/admin-woocommerce.php';
include __DIR__ . '/includes/woocommerce/functions-woocommerce.php';
}
function bw_tools_settings_shortcodes() {
include __DIR__ . '/includes/shortcodes/admin-shortcodes.php';
include __DIR__ . '/includes/shortcodes/functions-shortcodes.php';
}
function bw_tools_settings_jetpack() {
include __DIR__ . '/includes/settings-jetpack.php';
// include __DIR__ . '/includes/functions/source-jetpack.php';
}
function bw_tools_settings_scheduler() {
include __DIR__ . '/includes/settings-scheduler.php';
//include __DIR__ . '/includes/functions/source-scheduler.php';
}
function bw_tools_settings_login() {
include __DIR__ . '/includes/settings-redirections.php';
// include __DIR__ . '/includes/functions/source-redirections.php';
}
function bw_tools_settings_qr() {
include __DIR__ . '/includes/settings-qr.php';
// include __DIR__ . '/includes/functions/source-qr.php';
}
function bw_tools_settings_tools() {
include __DIR__ . '/includes/settings-tools.php';
// include __DIR__ . '/includes/functions/source-tools.php';
}
function bw_tools_settings_login_registration() {
include __DIR__ . '/includes/settings-login-registration.php';
// include __DIR__ . '/includes/functions/source-login-registration.php';
}
function bw_tools_settings_vacation_mode() {
include __DIR__ . '/includes/settings-vacation-mode.php';
// include __DIR__ . '/includes/functions/source-vacation-mode.php';
}
/*function bw_tools_settings_slide_menu() {
include __DIR__ . '/includes/settings-side-menu.php';
include __DIR__ . '/includes/functions/source-side-menu.php';
}*/
// --------- SLIDE MENU SETTINGS CALLBACK ---------
/*
if (!function_exists('bw_tools_settings_slide_menu')) {
function bw_tools_settings_slide_menu() {
// You can further break this into a separate file if desired.
?>
<div class="wrap">
<h1><?php esc_html_e('Slide Menu Settings', 'bogoworkshop-tools'); ?></h1>
<p><?php esc_html_e('This is your Slide Menu settings page. You can add your options here.', 'bogoworkshop-tools'); ?></p>
<!-- Later: add form fields/settings for Slide Menu here -->
</div>
<?php
}
}*/
// -----------------------------------------------
if ( file_exists(__DIR__ . 'includes/funnels/funnels.php') ) {
require_once __DIR__ . 'includes/funnels/funnels.php';
}
// Centralized menu configuration
function bw_tools_get_menu_items() {
return [
'general' => [
'page_title' => 'General',
'menu_title' => 'General',
'callback' => 'bw_tools_settings_general',
'is_main' => true,
],
'login-visibility' => [
'page_title' => 'Login Visibility CSS',
'menu_title' => 'Login Visibility CSS',
'callback' => 'bw_tools_settings_login_visibility',
],
'woocommerce' => [
'page_title' => 'WooCommerce',
'menu_title' => 'WooCommerce',
'callback' => 'bw_tools_settings_woocommerce',
],
'shortcodes' => [
'page_title' => 'Shortcodes',
'menu_title' => 'Shortcodes',
'callback' => 'bw_tools_settings_shortcodes',
],
'jetpack' => [
'page_title' => 'Jetpack',
'menu_title' => 'Jetpack',
'callback' => 'bw_tools_settings_jetpack',
],
'scheduler' => [
'page_title' => 'Scheduler',
'menu_title' => 'Scheduler',
'callback' => 'bw_tools_settings_scheduler',
],
'login' => [
'page_title' => 'Login/Redirects',
'menu_title' => 'Login/Redirects',
'callback' => 'bw_tools_settings_login',
],
'qr' => [
'page_title' => 'QR Code',
'menu_title' => 'QR Code',
'callback' => 'bw_tools_settings_qr',
],
'tools' => [
'page_title' => 'Tools',
'menu_title' => 'Tools',
'callback' => 'bw_tools_settings_tools',
],
'login-registration' => [
'page_title' => 'Login/Registration Settings',
'menu_title' => 'Login/Registration',
'callback' => 'bw_tools_settings_login_registration',
],
/* 'slide-menu' => [
'page_title' => 'Slide Menu Settings',
'menu_title' => 'Slide Menu',
'callback' => 'bw_tools_settings_slide_menu', // <-- This is now always defined
],*/
'vacation-mode' => [
'page_title' => 'Vacation Mode',
'menu_title' => 'Vacation Mode',
'callback' => 'bw_tools_settings_vacation_mode',
]
];
}
// Register admin menu and all plugin submenus.
add_action('admin_menu', function() {
$menu_items = bw_tools_get_menu_items();
$main_slug = 'bogoworkshop-tools';
$capability = 'manage_options';
// Add main menu
add_menu_page(
'BogoWorkshop Tools',
'Bogo Tools',
$capability,
$main_slug,
$menu_items['general']['callback'],
'dashicons-admin-tools'
);
// Add all submenu items
foreach ($menu_items as $key => $item) {
$slug = ($key === 'general') ? $main_slug : $main_slug . '-' . $key;
add_submenu_page(
$main_slug,
$item['page_title'],
$item['menu_title'],
$capability,
$slug,
$item['callback']
);
}
});
// Load admin panel CSS/JS on BogoWorkshop Tools pages.
add_action('admin_enqueue_scripts', function($hook) {
if (strpos($hook, 'bogoworkshop-tools') !== false) {
wp_enqueue_style(
'bw-admin-style',
plugin_dir_url(__FILE__) . 'assets/css/admin-style.css',
[],
'1.2.0'
);
/* wp_enqueue_style(
'bw-admin-style',
plugin_dir_url(__FILE__) . '/includes/output-css.php',
[],
'1.2.0'
);*/
wp_enqueue_script(
'bw-admin-script',
plugin_dir_url(__FILE__) . 'assets/js/admin-script.js',
['jquery'],
'1.2.0',
true
);
/* if (strpos($hook, 'slide-menu') !== false) {
wp_enqueue_style('wp-color-picker');
wp_enqueue_script('wp-color-picker');
}*/
}
});
// Load frontend plugin styles and scripts globally.
function bw_tools_enqueue_frontend_assets() {
wp_enqueue_style(
'bogy-frontend-style',
plugin_dir_url(__FILE__) . 'assets/css/frontend.css',
[],
'1.2.0'
);
wp_enqueue_script(
'bogy-frontend-js',
plugin_dir_url(__FILE__) . 'assets/js/frontend.js',
['jquery'],
'1.2.0'
);
}
add_action('wp_enqueue_scripts', 'bw_tools_enqueue_frontend_assets');
// Register slide menu options on activation.
/*
register_activation_hook(__FILE__, 'bw_tools_activate_slide_menu');
function bw_tools_activate_slide_menu() {
add_option('slide_menu_position', 'left');
add_option('slide_menu_width', 300);
add_option('slide_menu_level1_normal', '#ffffff');
add_option('slide_menu_level1_hover', '#3498db');
add_option('slide_menu_level1_active', '#2980b9');
add_option('slide_menu_level2_normal', '#f5f5f5');
add_option('slide_menu_level2_hover', '#3498db');
add_option('slide_menu_level2_active', '#2980b9');
add_option('slide_menu_level3_normal', '#e9e9e9');
add_option('slide_menu_level3_hover', '#3498db');
add_option('slide_menu_level3_active', '#2980b9');
add_option('slide_menu_bg_color', '#2c3e50');
}
*/
