Please login for access. Login
function display_featured_image_shortcode($atts) {
    global $post;
    $default_atts = array(
        'size' => 'large', // tamaño de imagen por defecto
        'class' => 'custom-class', // clase CSS por defecto para la imagen
    );
    $atts = shortcode_atts($default_atts, $atts, 'featured_img');

    if (has_post_thumbnail($post->ID)) {
        $featured_image = get_the_post_thumbnail($post->ID, $atts['size'], array('class' => $atts['class']));
        return $featured_image;
    } else {
        return ''; // devuelve una cadena vacía si no hay imagen destacada
    }
}
add_shortcode('featured_img', 'display_featured_image_shortcode');



////////////////////// todos los servicios


function mostrar_servicios_personalizados($atts) {
    // Obtener el ID de la publicación actual
    $post_id = get_the_ID();

    // Obtener los valores del campo personalizado
    $servicios = get_post_meta($post_id, 'servicios_adicionales', true);
	
    if (!$servicios) {
        return '<p>No se encontraron servicios personalizados para esta publicación.</p>';
    }

    $cabeceras = [
                "Internet",
        "Aparcamiento",

        "Cocina",
        "Habitación",
        "Baño",
        "Zona de estar",
        "Instalaciones de la habitación",
        "Exteriores",
        "Bienestar",
        "Comida y bebida",
        "Actividades",
        "Vistas y exteriores",
        "Características del edificio",
        "Servicios de recepción",
        "Servicios de limpieza",
        "Instalaciones de negocios",
        "Varios",
        "Seguridad",
        "Idiomas que se hablan",
		"Bienestar",
		"Servicios",
		"General",
    ];

    // Preparar el texto para evitar conflictos con las cabeceras que aparecen como ítems
    foreach ($cabeceras as $cabecera) {
        $servicios = preg_replace('/\| ?' . preg_quote($cabecera, '/') . ' ?\|/', '|', $servicios);
    }

    // Dividir el texto en bloques basados en las cabeceras
  /*  $bloques = preg_split('/(' . implode('|', array_map('preg_quote', $cabeceras, array_fill(0, count($cabeceras), '/'))) . '): /', $servicios, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);*/

	// Dividir el texto en bloques basados en las cabeceras
// Dividir el texto en bloques basados en las cabeceras
// Dividir el texto en bloques basados en las cabeceras
$bloques = preg_split('/('.implode('|', array_map(function($cabecera) { return preg_quote($cabecera, '/'); }, $cabeceras)).')/', $servicios, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);






	
	
    ob_start();
    ?>
    <style>
         .servicios {
                display: grid;
                grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
                grid-gap: 20px;
                border: 1px solid #ccc;
                padding: 10px;
                margin-bottom: 20px;
            }

            .bloque {
                padding: 10px;
                border-bottom: 1px solid #ccc;
            }

            .cabecera {
                font-weight: bold;
                margin-bottom: 5px;
            }

            .items {
                list-style-type: none;
                margin: 0;
                padding: 0;
            }

            .items li {
                margin-bottom: 5px;
            }
    </style>
    <div class="servicios">
    <?php
    // Lógica para procesar y mostrar los bloques y sus ítems
    for ($i = 0; $i < count($bloques); $i += 2) {
        $cabecera = trim($bloques[$i]);
        $itemsTexto = isset($bloques[$i + 1]) ? $bloques[$i + 1] : '';
        $items = explode('|', $itemsTexto);
        ?>
        <div class="bloque">
            <div class="cabecera"><?php echo $cabecera; ?></div>
            <ul class="items">
                <?php foreach ($items as $item) {
                    $item = trim($item);
                    if (!empty($item)) {
                        echo "<li>$item</li>";
                    }
                } ?>
            </ul>
        </div>
        <?php
    }
    ?>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode('todosservicios', 'mostrar_servicios_personalizados');


Un comentario

Deja una respuesta