<?php
/*crear una función para convertir en un enlace con la clase "enlace-favorito" con php las apariciones de una palabra
en el texto de wordpress pero que esa palabra no esté dentro de ningún atributo de imagen como title,
alt ni dentro de cualquier otro atributo de un elemento, tampoco tiene que estar precedida ni seguida de comillas simples ni dobles,
solo tiene que estar dentro de un párrafo o dentro de un elemento de un encabezado, sin formar parte de ningún atributo de elemento
*/
/* Opcion Uno ChatGPT */
function agregar_enlace_favorito($content) {
// Palabra a buscar
$palabra = 'ejemplo';
// Patrón para buscar la palabra fuera de los atributos
$patron = '/(?<!")(?<!\')\b(' . $palabra . ')\b(?!\')(?!\")/i';
// Reemplazar la palabra con el enlace
$nuevo_contenido = preg_replace_callback($patron, function($coincidencias) {
return '<a href="#" class="enlace-favorito">' . $coincidencias[0] . '</a>';
}, $content);
return $nuevo_contenido;
}
add_filter('the_content', 'agregar_enlace_favorito');
/* Opcion Dos */
function cambia_enlaces_favoritos($contenido) {
$mis_enlaces = array(
"Oxygen" => "oxygenbuilder.com",
"Recoda" => "oxygenados.com/recoda-workspace/",
"Oxyprops" => "oxygenados.com/oxy-props/",
);
foreach ($mis_enlaces as $nombre => $enlace){
$resultadoEnlace= '<a class="enlace-favorito" href="https://'.$enlace.'" target="_blank">'.$nombre.'</a>';
// Utiliza preg_replace_callback para reemplazar la palabra solo cuando no está dentro del atributo "title"
$contenido = preg_replace_callback('/(<[^>]+title=[^>]*>.*?<\/[^>]+>)|(\b' . $nombre . '\b)/i', function($matches) use($nombre, $resultadoEnlace) {
// Si la palabra está dentro del atributo "title", devuelve la cadena original
if ($matches[1] != '') {
return $matches[1];
} else {
// Si la palabra no está dentro del atributo "title", reemplaza la palabra por la nueva palabra
return str_replace($nombre, $resultadoEnlace, $matches[2]);
}
}, $contenido );
}
return $contenido;
}
add_filter('the_content', 'cambia_enlaces_favoritos');
<?php
$excluidos = array(2,5);
function happyfilesArchivos($id, $cantidad, $orderBy,$orden){
/***
* $id = Id de la carpeta
* $cantidad = Cuantas fotos por carpeta
* $orderBy puede ser por:
* - fecha: 'post_date'
* - nombre: 'post_title'
* - ID: 'ID' (viene siendo lo mismo que por fecha)
*
* */
$args = array(
'post_type' => 'attachment',
'post_mime_type' =>'image',
'post_status' => 'inherit',
'posts_per_page' =>$cantidad,
'order_by' => $orderBy,
'order' => $orden,
'tax_query' => array(
array(
'taxonomy' => 'happyfiles_category',
'field' => 'ID',
'terms' => $id,
),
),
);
$query_images = new WP_Query( $args );
$images = array();
$salida = '<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);
$salida .='<a data-fancybox="'.$id.'" data-src="'.$img.'" data-caption="'.$caption.'">';
$salida .='<img loading="lazy" src="'.$img_thumb.'" style="max-width:100%;height:auto;" />';
$salida .='</a>';
}
$salida .='</div>';
wp_reset_postdata();
echo $salida;
}
function happyfilesCarpetas($no_incluidos) {
$args = [
"taxonomy" => "happyfiles_category",
"orderby" => "name",
"order" => "ASC",
"hide_empty" => false,
];
$folders = get_terms( $args );
foreach ( $folders as $folder ) {
if (in_array($folder->term_id, $no_incluidos)){
continue;
}
if($folder->count ){
echo '<h2>'.$folder->name.'</h2>';
happyfilesArchivos($folder->term_id, 3, 'post_date', 'DESC');
}
}
}
happyfilesCarpetas($excluidos);
?>
<?php
function dameNombreseIDs()
{
$args = [
"taxonomy" => "happyfiles_category",
"orderby" => "name",
"order" => "ASC",
"hide_empty" => false,
];
$carpetas = get_terms($args);
foreach ($carpetas as $carpeta) {
echo "ID: <b>" . $carpeta->term_id . "</b> -- Nombre: <b>" . $carpeta->name . "</b><br>";
}
}
dameNombreseIDs();
?>
<div class="secciones-contenedor">
<?php
$iconoCat = true; //True muestra imagen - False no muestra imagen de las categorias.
$colorLinkCat = true; //True colorea - False no colorea el enlace de las categorias.
$colorLinkPost = true; //True colorea - False no colorea el enlace de los enlaces a los posts.
$cantpostTag = true; //True muestra - False no muestra la cantidad de por etiqueta posts.
$cantpostTagColor = true; //True colorea - False no colorea la cantidad de por etiqueta posts.
$ocultaVacios = true; //True oculta las categorías vacías - False muestra las categorías vacías.
$claseSeccionPal = "secciones-contenedor-grupo"; //Sección Externa que engloba todo.***
$claseDivCat = "secciones-div__enlaceCat"; //Div que contiene la categoría.****
$claseDivBola = "seccion-div-decorativa"; // Div de la bolita.
$claseDivDatos = "secciones-div-conjunto__datos"; //Div que engloba imagen de etiqueta, nombre de etiqueta y enlaces de los posts.
$claseLinkPost = "secciones-enlaces__posts"; //Div contenedor de los enlaces de los posts.
$claseNumeros = "secciones-tag__num"; //Clase para los números y paréntesis de la cantidad de posts.
$prefijoImagenClase = "secciones-div__"; //Prefijo de la clase que varía según sea imagen o bolita.
$colorPorDefecto = '#BDB76B'; //Color aplicado por defecto en el caso que la categoría no lo tenga asignado.
$imagenPorDefecto = '/wp-content/uploads/2023/03/typescript.svg'; //Imagen por defecto en el caso de que la categoría no lo tenga asignado. Dejar solo con comillas para usar la bolita.
/*** FINAL CONFIGURACION ****/
/*****************************************************
************************************
/*****************************************************/
/*********************************************/
/**** NO TOCAR DE AQUI EN ADELANTE ***/
function obtieneImagen($id,$defecto)
{
$imagen_id = get_term_meta($id);
if (count($imagen_id) > 1) {
$img = $imagen_id['piotnetgrid_term_image'][0];
$image = wp_get_attachment_url($img);
}else{
$image = $defecto;
}
$image ? ($muestraImagen = '<img class="secciones-div__imagen" src="' . $image . '">') : ($muestraImagen = "");
return $muestraImagen;
}
function obtieneColor($id)
{
$color_id = get_term_meta($id);
if (count($color_id) > 1) {
$piotnetColor = $color_id['piotnetgrid_term_color'][0];
return '#' . $piotnetColor;
}
}
$categorias = get_categories();
foreach ($categorias as $LaCategoria) {
// Obtener el link a la categoría
$LaCategoria_link = get_category_link($LaCategoria->term_id);
$LaCategoriaId = $LaCategoria->term_id;
$imagenCat = obtieneImagen($LaCategoriaId,$imagenPorDefecto);
$catColor = obtieneColor($LaCategoriaId);
// echo '<pre>'; print_r($terminos); echo '</pre>';
// Imprimir el nombre de la categoría
$el_Color = ($catColor)? $catColor : $colorPorDefecto;
$colorLinkCat ? ($coloreaLinkCat = 'style="color:' . $el_Color . '"') : ($coloreaLinkCat = "");
$elIcono = ($imagenCat)? $imagenCat : '<div class="secciones-div__bola" style="background-color:'.$el_Color.'"></div>';
$salida = "";
$salida =
'<div style="border:1px solid ' . $el_Color . '" class="' . $claseSeccionPal . '"><div class="' . $claseDivCat . '">' . $elIcono . '<a href="' . esc_url($LaCategoria_link) . '" ' . $coloreaLinkCat . '>' . $LaCategoria->name . '</a>';
$args = [
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish',
];
$posts = get_posts($args);
$i = 0;
//$tag_count = $LaCategoria->count;
$colorLinkPost ? ($coloreaLinkPost = 'style="color:' . $el_Color . '"') : '';
$enlaces = "";
foreach ($posts as $post) {
$lacat = get_the_category($post->ID);
if ($lacat[0]->term_id == $LaCategoriaId) {
$enlaces .= '<div class="secciones-div__enlaces-container"><div class="secciones-div__enlaces-div" style="background-color:'.$el_Color .'"></div><a class="' . $claseLinkPost . '" data-colorin="'.$el_Color .'" style="color:' . $el_Color . '" href="' . get_permalink($post->ID) . '"> ' . $post->post_title . '</a></div>';
$i++;
}
}
$ocultado = ($ocultaVacios && $i < 1) ? true : false;
if (!$ocultado) {
$i < 1 ? ($DivEnlaceTag = "</div>") : ($DivEnlaceTag = '<num class="secciones-tag__num" style="color:' . $el_Color . '">(' . $i . ')</num></div>');
$i > 0 ? ($salida .= $DivEnlaceTag . '<div class="secciones-div__enlaces-posts">' . $enlaces . '</div>') : ($salida .= '</div>');
echo $salida . '</div>';
}
}
?>
</div>
<div class="secciones-contenedor">
<?php
$iconoCat = true; //True pone imagen - False no pone el imagen de las categorias
$iconoTag = true; //True pone imagen - False no pone el imagen de las etiquetas.
$colorLinkCat = true; //True colorea - False no colorea el enlace de las categorias.
$colorLinkTag = true; //True colorea - False no colorea el enlace de las etiquetas.
$colorLinkPost = true; //True colorea - False no colorea el enlace de los enlaces a los posts.
$cantpostTag = true; //True muestra - False no muestra la cantidad de por etiqueta posts.
$cantpostTagColor = true; //True colorea - False no colorea la cantidad de por etiqueta posts.
$claseSeccionPal = "secciones-contenedor-grupo"; //Sección Externa que engloba todo.***
$claseDivCat = "secciones-div__enlaceCat"; //Div que contiene la categoría.****
$claseDivBola = "seccion-div-decorativa"; // Div de la bolita.
$claseDivDatos = "secciones-div-conjunto__datos";//Div que engloba imagen de etiqueta, nombre de etiqueta y enlaces de los posts.
$claseLinkPost = "secciones-enlaces__posts"; //Div contenedor de los enlaces de los posts.
$claseNumeros = "secciones-tag__num"; //Clase para los números y paréntesis de la cantidad de posts.
$prefijoImagenClase= "secciones-div__"; //Prefijo de la clase que varía según sea imagen o bolita.
/*** FINAL CONFIGURACION ****/
/**** NO TOCAR DE AQUI EN ADELANTE ***/
function obtieneImagen($id,$clase){
$imagen_id = get_term_meta($id);
$img = $imagen_id['piotnetgrid_term_image'][0];
$image = wp_get_attachment_url($img);
($image) ? $muestraImagen = '<img class="secciones-div__'.$clase.'-imagen" src="'.$image.'">' : $muestraImagen= "";
return $muestraImagen;
}
function obtieneColor($id){
$color_id = get_term_meta($id);
$piotnetColor = $color_id['piotnetgrid_term_color'][0];
return '#'.$piotnetColor;
}
// Obtener todas las categorías
$categories = get_categories();
$tags = get_tags();
// Recorrer cada categoría
foreach ( $categories as $category ) {
// Obtener el link a la categoría
$category_link = get_category_link( $category->term_id );
$categoryId = $category->term_id ;
$imagenCat = obtieneImagen($categoryId, 'categoria');
// echo '<pre>'; print_r($terminos); echo '</pre>';
// Imprimir el nombre de la categoría
($colorLinkCat)? $coloreaLinkCat = 'class="fuente-variable-seccion" style="color:'. obtieneColor($categoryId).'"' : $coloreaLinkCat = "";
?>
<div <?php echo 'class="'. $claseSeccionPal.'"' ?>>
<div <?php echo 'class="'. $claseDivCat.'"' ?>>
<?php echo $imagenCat; ?><a href="<?php echo esc_url( $category_link ).'" '.$coloreaLinkCat. '>'. $category->name . '</a></div>';
foreach ($tags as $tag) {
$tagId = $tag->term_id;
$args = array(
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish',
'tag_id' => $tagId,
);
$posts = get_posts($args);
$i = 0;
$salida = "";
$tag_count = $tag->count;
$catColor = obtieneColor($tagId);
($colorLinkPost) ? $coloreaLinkPost = 'style="color:'.$catColor.'"' : '';
foreach ($posts as $post) {
$lacat = get_the_category($post->ID);
if ($lacat[0]->term_id == $categoryId ) {
$salida .= '<a '.$coloreaLinkPost.' class="'.$claseLinkPost.'" href="' . get_permalink($post->ID) . '"> - ' . $post->post_title . '</a>';
$i++;
}
}
$conImagen = obtieneImagen($tagId,'etiqueta');
(!$conImagen)? $divColor = '<div class="'.$claseDivBola.'" style="background-color:'.$catColor.'"></div>': $divColor = "";
($i < 1 ) ? $DivEnlaceTag = "" : $DivEnlaceTag = '<div class="secciones-div-conjunto__datos" style="border:1px solid '.$catColor.'" ><div class="secciones-div__enlaceTag">'.$divColor.$conImagen.'<a href="'. get_tag_link($tagId) .'"class="fuente-variable-seccion" style="color:'.$catColor.'">'.$tag->name.'</a><num class="secciones-tag__num" style="color:'.$catColor.'">('.$i.')</num></div>';
if ($i > 0 ) echo $DivEnlaceTag.'<div class="secciones-div__enlaces-posts">'.$salida.'</div></div>';
}
echo '</div>';
}
?>
</div>