File: /var/www/delta/wp-content/plugins/delta-site-plugin/index.php
<?php
/*
Plugin Name: Delta Site Plugin
Description: Site plugin for Delta Reality website containing custom post types, custom fields and specific features
Version: 1.0
Author: Borealis
Text Domain: delta
*/
if(!defined('ABSPATH')){
exit; // Exit if accessed directly
}
if(file_exists(__DIR__ . '/acf-block-creation/index.php')){
require_once __DIR__ . '/acf-block-creation/index.php';
}
// Register new post types and taxonomies
add_action( 'init', function(){
register_post_type('delta_project', array(
'labels' => array(
'name' => __('Projects', 'delta'),
'singular_name' => __('Project', 'delta'),
),
'public' => true,
'show_in_menu' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields', ),
'has_archive' => true,
"map_meta_cap" => true,
"rewrite" => array("slug" => "project")
));
register_taxonomy( 'delta_project_category', 'delta_project', array(
'labels' => array(
'name' => __('Categories', 'delta'),
'singular_name' => __('Category', 'delta'),
'add_new_item' => __('Add New Category', 'delta'),
'edit_item' => __('Edit Category', 'delta'),
'new_item' => __('New Category', 'delta'),
'view_item' => __('View Category', 'delta'),
'view_items' => __('View Categories', 'delta'),
'search_items' => __('Search Categories', 'delta'),
'not_found' => __('No Categories found', 'delta'),
'all_items' => __('All Categories', 'delta')
),
'hierarchical' => true,
'show_in_rest' => true
));
register_taxonomy( 'delta_project_type', 'delta_project', array(
'labels' => array(
'name' => __('Types', 'delta'),
'singular_name' => __('Type', 'delta'),
'add_new_item' => __('Add New Type', 'delta'),
'edit_item' => __('Edit Type', 'delta'),
'new_item' => __('New Type', 'delta'),
'view_item' => __('View Type', 'delta'),
'view_items' => __('View Types', 'delta'),
'search_items' => __('Search Types', 'delta'),
'not_found' => __('No Types found', 'delta'),
'all_items' => __('All Types', 'delta')
),
'hierarchical' => true,
'show_in_rest' => true
));
register_taxonomy( 'delta_project_branch', 'delta_project', array(
'labels' => array(
'name' => __('Branches', 'delta'),
'singular_name' => __('Branch', 'delta'),
'add_new_item' => __('Add New Branch', 'delta'),
'edit_item' => __('Edit Branch', 'delta'),
'new_item' => __('New Branch', 'delta'),
'view_item' => __('View Branch', 'delta'),
'view_items' => __('View Branches', 'delta'),
'search_items' => __('Search Branches', 'delta'),
'not_found' => __('No Branches found', 'delta'),
'all_items' => __('All Branches', 'delta')
),
'hierarchical' => true,
'show_in_rest' => true
));
});
// Add site settings to admin menu
add_action( 'acf/init', function(){
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => __( 'Site settings', 'delta' ),
'menu_title' => __( 'Site settings', 'delta' ),
'menu_slug' => 'site-settings',
'capability' => 'manage_options'
));
}
});
// Save ACF fields in JSON
add_filter('acf/settings/save_json', 'delta_acf_json_save_point');
function delta_acf_json_save_point( $path ) {
// update path
$path = plugin_dir_path(__FILE__) . 'acf-json';
return $path;
}
// Load ACF fields from JSON
add_filter('acf/settings/load_json', 'delta_acf_json_load_point');
function delta_acf_json_load_point( $paths ) {
// remove original path (optional)
unset($paths[0]);
// append path
$paths[] = plugin_dir_path(__FILE__) . 'acf-json';
return $paths;
}
// Register ACF Blocks
add_action( 'init', 'register_my_acf_blocks' );
function register_my_acf_blocks(){
if ( ! function_exists( 'register_block_type' ) ) {
return;
}
$directories = glob(get_template_directory() . '/templates/acf-blocks/*' , GLOB_ONLYDIR);
foreach($directories as $dir){
register_block_type($dir);
}
}
// Register new category for our elements only
add_filter( 'block_categories_all' , function( $categories ) {
// Adding a new category.
$categories[] = array(
'slug' => 'delta-elements',
'title' => 'Delta'
);
return $categories;
} );
add_filter( 'wpseo_meta_author', '__return_false' );
// Remove annoying 301 Redirects pointer in wp-admin
add_action('admin_enqueue_scripts', function() {
wp_add_inline_script('jquery', "
jQuery(function($) {
const observer = new MutationObserver(() => {
const pointer = $('#wp-pointer-0:contains(\"301 Redirects\")');
if (pointer.length) {
pointer.remove();
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
});
");
});