Funciones de textos JS javascript

View Snippet
                    //Encontar un texto dento de comillas
let texto = "Este es un texto 'desconocido' dentro de comillas";
let resultado = texto.match(/'([^']+)'/)[1];
console.log(resultado); // 'desconocido'

//Reemplazar un texto dentro de comillas
let texto2 = "Este es un texto 'desconocido' dentro de comillas";
let nuevoTexto = "conocido";
let resultado2 = texto.replace(/'([^']+)'/, "'" + nuevoTexto + "'");
console.log(resultado); // Este es un texto 'conocido' dentro de comillas

//Reemplazar todas las apariciones de un texto dentro de comillas
//Se añade g al final de la funcion replace
let texto3 = "Este es un texto 'desconocido' dentro de  'texto' comillas";
let nuevoTexto3 = "conocido";
let resultado3 = texto.replace(/'([^']+)'/g, "'" + nuevoTexto + "'");
console.log(resultado); // Este es un texto 'conocido' dentro de comillas


//Reemplazar todas las apariciones de un texto dentro de una cadena por otro texto con javaxcript
//Forma simplelet cadena = "Este es un ejemplo de texto";
let nuevoTexto = cadena.replace(/texto/g, "cambio");

console.log(nuevoTexto); // "Este es un ejemplo de cambio"
//Con variables
let palabraAnterior = "texto";
let palabraNueva = "cambio";
let cadena = "Este es un ejemplo de texto";

let nuevoTexto = cadena.replace(new RegExp(palabraAnterior, 'g'), palabraNueva);
                  

✅ ♨️ MutationObserver ♨️ javascript

View Snippet
                    /*Puedes utilizar el objeto MutationObserver para detectar cambios en un elemento y luego ejecutar una función en consecuencia. 
Para hacer esto, debes crear una instancia de MutationObserver y pasarle una función de devolución de llamada (callback) que se ejecutará 
cada vez que ocurra un cambio en el elemento. 
Aquí te dejo un ejemplo de cómo puedes hacer esto para detectar cambios en la propiedad display de un elemento div:
*/
// Selecciona el elemento div que deseas observar
const divObservado = document.querySelector('#miDiv');

// Crea una instancia de MutationObserver
const observador = new MutationObserver(function(mutaciones) {
  // Se ejecutará cada vez que ocurra un cambio en el elemento div
  mutaciones.forEach(function(mutation) {
    // Verifica si la propiedad display cambió
    if (mutation.attributeName === 'style' && mutation.target.style.display !== mutation.oldValue) {
      // Ejecuta tu función aquí
      miFuncion();
    }
  });
});

// Configura las opciones del observador
const opcionesObservador = {
  attributes: true,
  attributeFilter: ['style'],
  attributeOldValue: true
};

// Comienza a observar el elemento div
observador.observe(divObservado, opcionesObservador);

// Función que se ejecutará cuando la propiedad display del elemento div cambie
function miFuncion() {
  // Tu código aquí
}

/*
En este ejemplo, se selecciona el elemento div que deseas observar y se crea una instancia de MutationObserver. 
Luego, se configuran las opciones del observador para que solo observe cambios en la propiedad style del elemento y se 
inicia la observación del elemento div. Finalmente, se define una función de devolución de llamada (miFuncion) que se 
ejecutará cada vez que la propiedad display del elemento div cambie.
*/
                  

Pasar post a borrador automáticamente php

View Snippet
                    <?php
function comprobar_fecha_borrador($post_id) {
    $fecha_borrador = get_post_meta($post_id, 'fecha_borrador', true);
    $fecha_actual = date('Y-m-d H:i:s');
    if ($fecha_borrador <= $fecha_actual) {
        wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
    }
}
add_action('wp', 'comprobar_fecha_borrador');

                  

Scroll y GrayScale javascript

View Snippet
                    document.addEventListener('DOMContentLoaded', function() {
    var images = document.querySelectorAll('.monochrome');
    if (images.length) { // Check if there are any images with the "monochrome" class
        window.addEventListener('scroll', function() {
            var scrollPos = window.pageYOffset;
            images.forEach(function(image) {
            var offset = image.offsetTop;
                if (scrollPos >= offset - 250 && scrollPos <= offset + image.offsetHeight - 250) 
                image.style.filter = 'grayscale(0%)'; // Set the selected image to full color
                 else 
                image.style.filter = 'grayscale(100%)'; // Set the selected image to monochrome
            
            });
        });
    }
});
                  

Galería Happyfiles con FancyBox text

View Snippet
                    <?php 
// Usage [hf-fb-gallery id="12"]
// Requires HappyFiles.io plugin. ID = Happyfiles folder ID
add_shortcode( 'hf-fb-gallery' , 'happyfiles_fancybox_gallery' );

function happyfiles_fancybox_gallery($attr){
    $args = shortcode_atts( array(
            'id' => '0'
        ), $attr );
    $id = $args['id'];
    $query_images_args = array(
    'post_type' => 'attachment',
    'post_mime_type' =>'image',
    'post_status' => 'inherit',
    'posts_per_page' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'happyfiles_category',
            'field'    => 'ID',
            'terms'    => $id,
        ),
    ),
);
$query_images = new WP_Query( $query_images_args );
$images = array();

    $buffer = '
    <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
 
    <div class="gallery grid-4-3-2">
    ';
    foreach ( $query_images->posts as $image) {
    $img = wp_get_attachment_image_url( $image->ID, "full");
    $img_thumb = wp_get_attachment_image_url( $image->ID, "thumbnail");
    $caption = wp_get_attachment_caption($image->ID);
    $buffer .='<a data-fancybox="'.$id.'" data-src="'.$img.'" data-caption="'.$caption.'">';
	$buffer .='<img loading="lazy" src="'.$img_thumb.'" style="max-width:100%;height:auto;" />';
    $buffer .='</a>';
    }
    $buffer .='</div>';
    wp_reset_postdata();
    return $buffer;
}