Skip to content

Instantly share code, notes, and snippets.

View krasenslavov's full-sized avatar
Work in progress

Krasen Slavov krasenslavov

Work in progress
View GitHub Profile
@krasenslavov
krasenslavov / functions.php
Last active January 3, 2022 08:58
How to Setup JS and CSS Environment Files (no external libraries)
<?php
define('DEV_MODE', true);
add_action('wp_enqueue_scripts', function() {
if (DEV_MODE) {
wp_register_script('unique_name', get_template_directory_uri() . 'assets/js/init.js', array('jquery'), '1.0', true);
wp_register_style('unique_name', get_template_directory_uri() . 'assets/css/uuid.css', array(), '1.0', 'all');
} else {
wp_register_script('unique_name', get_template_directory_uri() . 'build/js/uuid.min.js', array('jquery'), '1.0', true);
@krasenslavov
krasenslavov / build.php
Created December 27, 2021 21:20
How to Setup JS and CSS Environment Files (no external libraries)
<?php
exec('php ../js/run.php > js/uuid.min.js');
exec('sass ../scss/uuid.scss css/uuid.min.css --style compressed');
@krasenslavov
krasenslavov / run.php
Created December 27, 2021 21:19
How to Setup JS and CSS Environment Files (no external libraries)
<?php
ob_start();
include 'utils.mjs';
include 'module1.mjs';
include 'module2.mjs';
include 'module3.mjs';
$data = ob_get_clean();
@krasenslavov
krasenslavov / init.js
Last active January 3, 2022 09:02
How to Setup JS and CSS Environment Files (no external libraries)
var UUID = UUID || {};
var $ = jQuery || {};
UUID.pluginURL = 'https://example.com/wp-content/themes/uuid/';
UUID.loadModules = function ()
{
if (this.pluginURL) {
var jsURL = this.pluginURL + 'assets/js/';
this.require(jsURL + 'utils.mjs');
@krasenslavov
krasenslavov / admin_user_caps.php
Last active December 26, 2021 00:32
Extend User Profiles and Restrict Access to a Single Admin Only
<?php
if (!class_exists('Admin_User_Caps')) {
class Admin_User_Caps
{
function __construct()
{
add_action('admin_init', array($this, 'extend_user_profile'));
}
@krasenslavov
krasenslavov / admin.js
Last active November 7, 2021 19:12
ACF Autosave & Live Preview (using sessionStorage)
(function($) {
$(document).on('change', '.acf-postbox [id^="acf-field"]', function(e) {
e.preventDefault();
var permalink = $('#sample-permalink a').attr('href');
if (!sessionStorage.getItem(permalink)) {
sessionStorage.setItem('permalink', permalink);
}
@krasenslavov
krasenslavov / venues.php
Last active April 26, 2020 15:41
Create Gutenberg Blocks with ACF 5.8+ PRO. Visit blog post https://bit.ly/2Y8el2X
<?php
$class_name = 'demo';
if (!empty($block['className'])) {
$class_name .= ' ' . $block['className'];
}
if (!empty($block['align'])) {
$class_name .= ' align' . $block['align'];
@krasenslavov
krasenslavov / single-restaurants.php
Last active April 26, 2020 15:41
CPT UI + Advanced Custom Fields + Front-end data collection form. Visit blog post https://bit.ly/2KwpDWK
<?php
// Single page to display each restaurant.
get_header();
?>
<main id="site-content" role="main">
<div class="page type-page status-publish hentry">
<div class="post-inner thin">
<div class="entry-content">
<?php
@krasenslavov
krasenslavov / add-restaurant.php
Last active April 26, 2020 15:41
CPT UI + Advanced Custom Fields + Front-end data collection form. Visit blog post https://bit.ly/2KwpDWK
<?php
/**
* Template Name: Add Restaurant
* Template Post Type: page
*
* @package WordPress
* @subpackage Twenty_Twenty
* @since Twenty Twenty 1.0
*/
@krasenslavov
krasenslavov / custom_plain_html_search_form.php
Last active April 26, 2020 15:39
Override WordPress get_search_form with plain HTML form. Visit blog post https://bit.ly/2XX2QLQ
<?php
/**
* Generate custom search form
*/
function my_search_form($form) {
$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . home_url('/') . '">
<div>
<label class="screen-reader-text" for="s">Search for:</label>