Skip to content

Instantly share code, notes, and snippets.

View estevan-ulian's full-sized avatar
🏠
Working from home

Estevan Ulian estevan-ulian

🏠
Working from home
View GitHub Profile
@estevan-ulian
estevan-ulian / http-client-axios-adapter.ts
Last active April 7, 2025 16:47
HttpClient instance with Axios
interface IHttpError {
name: string;
message: string;
status: number;
details?: unknown;
}
const HttpMethod = {
GET: "GET",
POST: "POST",
@estevan-ulian
estevan-ulian / wp_disable_comments.php
Last active October 22, 2024 18:34
Completely disables comments on a Wordpress site.
<?php
if (!class_exists(WP_Disable_Comments)) {
class WP_Disable_Comments
{
private static $instance = null;
public static function get_instance()
{
@estevan-ulian
estevan-ulian / update_wp_urls.sql
Last active September 27, 2024 10:56
Updates URLs in the database of a wordpress site
SET @prefix = 'wp_'; -- DEFINE TABLES PREFIX
SET @old_url = 'http://old-site.com'; -- DEFINE THE OLD/CURRENT URL
SET @new_url = 'http://new-site.com'; -- DEFINE THE NEW URL
SET @query1 = CONCAT('UPDATE ', @prefix, 'options SET option_value = REPLACE(option_value, ''', @old_url, ''', ''', @new_url, ''') WHERE option_name = ''home'' OR option_name = ''siteurl''');
PREPARE stmt1 FROM @query1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET @query2 = CONCAT('UPDATE ', @prefix, 'posts SET post_content = REPLACE(post_content, ''', @old_url, ''', ''', @new_url, ''')');
@estevan-ulian
estevan-ulian / x-current-domain-middleware.ts
Last active October 22, 2024 18:59
Creates Nextjs middleware to pass the site's current domain via headers
import { NextFetchEvent, NextRequest, NextResponse } from "next/server";
import { CustomMiddleware } from "./chain";
export function xCurrentDomain(middleware: CustomMiddleware) {
return async (req: NextRequest, ev: NextFetchEvent) => {
const headers = new Headers(req.headers);
headers.set("x-current-domain", req.nextUrl.origin);
const response = NextResponse.next({
request: {
headers,
@estevan-ulian
estevan-ulian / rel-get-items-by-relation.php
Last active April 24, 2024 17:12 — forked from Crocoblock/rel-get-items-by-relation.php
JetEngine Related Items by Sibling Relation Macro
<?php
add_action( 'jet-engine/register-macros', function(){
class Related_Items_By_Sibling_Relation extends \Jet_Engine_Base_Macros {
public function macros_tag() {
return 'rel_get_items_by_relation';
}
@estevan-ulian
estevan-ulian / elementor_widgets.xml
Created March 19, 2024 15:42
Register Custom Elementor Widgets in wpml translation - jet accordion and jet tricks hotspots
<wpml-config>
<elementor-widgets>
<widget name="jet-accordion">
<fields-in-item items_of="toggles">
<field type="Classic Accordion: Title" editor_type="LINE">item_label</field>
<field type="Classic Accordion: Editor Content" editor_type="VISUAL">item_editor_content</field>
</fields-in-item>
</widget>
<widget name="jet-hotspots">
<fields-in-item items_of="hotspots">
@estevan-ulian
estevan-ulian / jet-engine-cct-api.php
Created February 28, 2024 17:16 — forked from MjHead/jet-engine-cct-api.php
API to interact with JetEngine CCT from directly PHP code
<?php
/**
* JetEngine CCT-related API functions to use in theme or plugin
*
* Theme usage - include get_theme_file_path( 'jet-engine-cct-api.php' );
* Plugin usage - include PLUGIN_PATH . 'path-to-file-inside-plugin/jet-engine-cct-api.php';
*/
/**
@estevan-ulian
estevan-ulian / add_content_footer.php
Last active February 7, 2024 14:48
Este snippet adiciona trechos de código html logo antes da tag </body> em um site Wordpress.
@estevan-ulian
estevan-ulian / only_numbers_mask.js
Created February 7, 2024 14:42
Mascara para receber somente números no valor do input
function onlyNumbersMask (event) {
let value = event.target.value;
let mask = '';
mask = value.replace(/\D/g, '');
event.target.value = mask;
}
@estevan-ulian
estevan-ulian / brl_currency_mask.js
Last active February 25, 2025 22:40
Brazilian currency mask
const brlCurrencyMask = (e) => {
const { value } = e.target;
let mask = "";
mask = value.replace(",", "").replace(".", "").replace(/\D/g, "");
const options = { minimumFractionDigits: 2 };
const result = new Intl.NumberFormat("pt-BR", options).format(
parseFloat(mask) / 100,
);