File: /var/www/linde-ai/wp-content/plugins/linde-site-plugin/index.php
<?php
/*
Plugin Name: Linde Site Plugin
Description: The site plugin for Linde AI website containing custom post types, custom fields and specific features
Version: 1.0
Author: Linde
Text Domain: linde
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
// Remove Posts from admin sidebar menu
add_action('admin_menu', function(){
remove_menu_page('edit.php');
});
// Register new post types
add_action( 'init', function() {
register_post_type('linde_use_case', array(
'labels' => array(
'name' => __('Use Cases', 'linde'),
'singular_name' => __('Use Cases', 'linde'),
),
'public' => true,
'show_in_menu' => true,
'supports' => array( 'title', 'thumbnail', 'custom-fields' ),
'has_archive' => true,
"map_meta_cap" => true,
'rewrite' => array('slug' => 'use-cases','with_front' => false),
));
register_post_type('linde_product', array(
'labels' => array(
'name' => __('Products', 'linde'),
'singular_name' => __('Product', 'linde'),
),
'public' => true,
'show_in_menu' => true,
'supports' => array( 'title', 'thumbnail', 'custom-fields' ),
'has_archive' => true,
"map_meta_cap" => true,
));
register_taxonomy( 'linde_division', 'linde_use_case', array(
'labels' => array(
'name' => __('Divisions', 'linde'),
'singular_name' => __('Division', 'linde'),
'add_new_item' => __('Add New Division', 'linde'),
'edit_item' => __('Edit Division', 'linde'),
'new_item' => __('New Division', 'linde'),
'view_item' => __('View Division', 'linde'),
'view_items' => __('View Divisions', 'linde'),
'search_items' => __('Search Divisions', 'linde'),
'not_found' => __('No Divisions found', 'linde'),
'all_items' => __('All Divisions', 'linde')
),
'hierarchical' => false
));
register_taxonomy( 'linde_status', 'linde_use_case', array(
'labels' => array(
'name' => __('Status', 'linde'),
'singular_name' => __('Status', 'linde'),
'add_new_item' => __('Add New Status', 'linde'),
'edit_item' => __('Edit Status', 'linde'),
'new_item' => __('New Status', 'linde'),
'view_item' => __('View Status', 'linde'),
'view_items' => __('View Status', 'linde'),
'search_items' => __('Search Status', 'linde'),
'not_found' => __('No Status found', 'linde'),
'all_items' => __('All Status', 'linde')
),
'hierarchical' => false
));
});
// Save ACF fields in JSON
add_filter('acf/settings/save_json', 'linde_acf_json_save_point');
function linde_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', 'linde_acf_json_load_point');
function linde_acf_json_load_point( $paths ) {
// remove original path (optional)
unset($paths[0]);
// append path
$paths[] = plugin_dir_path(__FILE__) . 'acf-json';
return $paths;
}
add_action( 'acf/init', function(){
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => __( 'Theme settings', 'linde' ),
'menu_title' => __( 'Theme settings', 'linde' ),
'menu_slug' => 'theme-settings',
"capability" => 'manage_options'
));
}
});
//Ajax calls
add_action( 'wp_ajax_get_use_cases', 'get_use_cases' );
add_action( 'wp_ajax_nopriv_get_use_cases', 'get_use_cases' );
function get_use_cases(){
$target = $_POST['target'];
$args = array(
'post_type' => 'linde_use_case',
'posts_per_page' => 9,
'paged' => $target,
'orderby' => 'date',
'order' => 'DESC'
);
$data = Timber::get_context();
$data['cases'] = new Timber\PostQuery($args);
$response = array();
ob_start();
Timber::render('partials/cases.twig', $data);
$response[] = ob_get_clean();
ob_start();
Timber::render('partials/single-cases.twig', $data);
$response[] = ob_get_clean();
echo json_encode($response);
wp_die();
}
?>