Skip to content

Instantly share code, notes, and snippets.

View stavros-melidoniotis's full-sized avatar
:octocat:

Stavros Melidoniotis stavros-melidoniotis

:octocat:
View GitHub Profile
@stavros-melidoniotis
stavros-melidoniotis / update-acf-values.php
Last active April 26, 2022 07:32
Update missing values of ACF fields when importing posts via Wordpress importer
<?php
// Fixes the missing values from ACF fields when importing posts via Wordpress importer.
function auto_update_cpt_fields()
{
$args = array(
'post_type' => <your-cpt-name>,
'posts_per_page' => -1
);
@stavros-melidoniotis
stavros-melidoniotis / functions.php
Last active January 12, 2023 07:32
Leaflet basic config for Wordpress
<?php
function enqueue_styles_and_scripts()
{
wp_enqueue_script('leafletjs', get_template_directory_uri() . '/path/to/leaflet-example.js', array(), '1.0.0', true);
}
add_action('wp_enqueue_scripts', 'enqueue_styles_and_scripts');
@stavros-melidoniotis
stavros-melidoniotis / social-share-links.php
Created April 26, 2022 07:19
Generate social share links for a given post in Wordpress
@stavros-melidoniotis
stavros-melidoniotis / human-readable-filesize.php
Created April 26, 2022 07:24
Return a file's size in human readable form
<?php
/**
* Return a file's size in human readable form
*
* @param int $bytes File's size in bytes
* @param int $decimals How many decimals on the returned value
*
* @return string The file's size in human readable form
*/
@stavros-melidoniotis
stavros-melidoniotis / useFetch.jsx
Last active January 12, 2023 07:33
React hook for performing fetch calls
import { useState, useEffect } from 'react'
const useFetch = (url, options = {}) => {
const [loading, setLoading] = useState(true)
const [data, setData] = useState()
const [error, setError] = useState()
useEffect(() => {
const controller = new AbortController()
setLoading(true)
@stavros-melidoniotis
stavros-melidoniotis / Search.jsx
Last active January 12, 2023 07:35
React component for searching values inside an array & highlighting matching keywords
import people from "./data";
const SearchBar = () => {
const [searchValue, setSearchValue] = useState("");
const searchResults =
searchValue.trim().length > 0
? people.filter((person) => {
const name = person.name;
@stavros-melidoniotis
stavros-melidoniotis / useMediaQuery.tsx
Created February 22, 2023 15:56
React hook for easy retrieval of media dimensions
import { useState, useEffect } from "react";
const useMediaQuery = (query: string) => {
const [matches, setMatches] = useState(false);
useEffect(() => {
const media = window.matchMedia(query);
if (media.matches !== matches) {
setMatches(media.matches);
@stavros-melidoniotis
stavros-melidoniotis / useClickOutside.tsx
Created February 23, 2023 10:48
React hook for detecting clicks outside of an element
import { RefObject, useEffect } from 'react'
const useClickOutside = (ref: RefObject<any>, callback: Function) => {
useEffect(() => {
const listener = (e: MouseEvent | TouchEvent) => {
if (!ref.current || ref.current.contains(e.target)) {
return
}
callback(e)
@stavros-melidoniotis
stavros-melidoniotis / telegram.js
Created May 17, 2023 15:53
Send notifications via Telegram
const BOT_TOKEN = process.env.BOT_TOKEN;
const CHANNEL_ID = process.env.CHANNEL_ID;
export const sendMessage = async (message) => {
const options = {
method: "POST",
headers: {
accept: "application/json",
"User-Agent":
"Telegram Bot SDK - (https://github.com/irazasyed/telegram-bot-sdk)",
@stavros-melidoniotis
stavros-melidoniotis / useDebounce.tsx
Created June 20, 2023 05:43
React useDebounce hook
import { useEffect, useState } from "react";
export function useDebounce<T>(value: T, delay?: number): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value);
useEffect(() => {
const timer = setTimeout(() => setDebouncedValue(value), delay || 500);
return () => {
clearTimeout(timer);