MODIF backend segundo idioma
This commit is contained in:
@ -33,7 +33,16 @@ class StarterSite extends Site {
|
||||
add_filter('timber/context', [$this, 'add_global_context']); // variables globales
|
||||
add_filter('timber/twig', [$this, 'add_videos_embed_to_twig']); //videos embed
|
||||
add_action('pre_get_posts', array($this, 'exclude_pages_from_search')); //exclude pages with ACF
|
||||
|
||||
|
||||
add_action('init', function() {
|
||||
if (function_exists('pll_current_language')) {
|
||||
// Forzar que ACF reconozca el idioma actual
|
||||
add_filter('acf/settings/current_language', function() {
|
||||
return pll_current_language();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@ -204,13 +213,23 @@ class StarterSite extends Site {
|
||||
return $file_types;
|
||||
}
|
||||
|
||||
//section "portada"
|
||||
private function getBotonesImagen() {
|
||||
//section "portada> ENLACES"
|
||||
private function getBotonesImagen($page_id = null) {
|
||||
|
||||
if (is_null($page_id)) {
|
||||
$page_id = get_the_ID();
|
||||
// Si estamos en euskera, obtener la página en español
|
||||
if (pll_current_language() == 'eu') {
|
||||
$spanish_page_id = pll_get_post($page_id, 'es');
|
||||
$page_id = $spanish_page_id ?: $page_id;
|
||||
}
|
||||
}
|
||||
|
||||
$botones = [];
|
||||
|
||||
for ($i = 1; $i <= 4; $i++) {
|
||||
$imagen = get_field('imagen_boton_' . $i);
|
||||
$enlace = get_field('enlace_boton_' . $i);
|
||||
$imagen = get_field('imagen_boton_' . $i, $page_id);
|
||||
$enlace = get_field('enlace_boton_' . $i, $page_id);
|
||||
|
||||
$botones[] = [
|
||||
'imagen' => $imagen,
|
||||
@ -255,7 +274,7 @@ class StarterSite extends Site {
|
||||
for ($i = 1; $i <= $max_logos; $i++) {
|
||||
$logoHeader = get_field('logo_header_' . $i, 'option');
|
||||
$textoHeader = get_field('texto_header_' . $i, 'option');
|
||||
|
||||
|
||||
if ($logoHeader || $textoHeader) {
|
||||
$logos[] = [
|
||||
'logo' => $logoHeader,
|
||||
@ -285,6 +304,49 @@ class StarterSite extends Site {
|
||||
'orderby' => 'date',
|
||||
'order' => 'DESC'
|
||||
]);
|
||||
|
||||
// $current_lang = pll_current_language();
|
||||
|
||||
// // Consulta con filtro de idioma
|
||||
// $posts = Timber::get_posts([
|
||||
// 'post_type' => 'opinion',
|
||||
// 'posts_per_page' => 1,
|
||||
// 'post_status' => 'publish',
|
||||
// 'orderby' => 'date',
|
||||
// 'order' => 'DESC',
|
||||
// 'lang' => $current_lang // ← Filtro por idioma
|
||||
// ]);
|
||||
|
||||
// // Debug temporal - quítalo después
|
||||
// $debug_all = Timber::get_posts([
|
||||
// 'post_type' => 'opinion',
|
||||
// 'posts_per_page' => -1,
|
||||
// 'post_status' => 'publish'
|
||||
// ]);
|
||||
|
||||
// $debug_spanish = Timber::get_posts([
|
||||
// 'post_type' => 'opinion',
|
||||
// 'posts_per_page' => -1,
|
||||
// 'post_status' => 'publish',
|
||||
// 'lang' => 'es'
|
||||
// ]);
|
||||
|
||||
// $debug_euskera = Timber::get_posts([
|
||||
// 'post_type' => 'opinion',
|
||||
// 'posts_per_page' => -1,
|
||||
// 'post_status' => 'publish',
|
||||
// 'lang' => 'eu'
|
||||
// ]);
|
||||
|
||||
// // Logging temporal
|
||||
// error_log("=== DEBUG ARTICULOS OPINION ===");
|
||||
// error_log("Idioma actual: " . $current_lang);
|
||||
// error_log("Total artículos opinion: " . count($debug_all));
|
||||
// error_log("Artículos en español: " . count($debug_spanish));
|
||||
// error_log("Artículos en euskera: " . count($debug_euskera));
|
||||
// error_log("Resultado consulta actual: " . count($posts));
|
||||
|
||||
// return $posts;
|
||||
}
|
||||
|
||||
private function getCampanaArticles() {
|
||||
@ -355,32 +417,35 @@ class StarterSite extends Site {
|
||||
'post_status' => 'publish',
|
||||
'orderby' => 'menu_order',
|
||||
'order' => 'ASC',
|
||||
'posts_per_page' => -1,
|
||||
|
||||
'posts_per_page' => -1,
|
||||
]);
|
||||
}
|
||||
|
||||
//Obtiene los "Documentos"
|
||||
private function getDocumentos() {
|
||||
|
||||
$posts = Timber::get_posts([
|
||||
$args = ([
|
||||
'post_type' => 'documento',
|
||||
'post_status' => 'publish',
|
||||
'orderby' => 'menu_order',
|
||||
'order' => 'ASC',
|
||||
'posts_per_page' => -1,
|
||||
'lang' => '',
|
||||
]);
|
||||
|
||||
//error_log('✅ Número de posts "Documentos" encontrados: ' . count($posts));
|
||||
$posts = Timber::get_posts($args);
|
||||
|
||||
$documentos = [];
|
||||
|
||||
foreach ($posts as $post) {
|
||||
$doc = [
|
||||
'id' => $post->ID,
|
||||
'title' => $post->title,
|
||||
'link' => $post->link,
|
||||
'content' => $post->content,
|
||||
'excerpt' => $post->excerpt,
|
||||
'id' => $post->ID,
|
||||
'title' => $post->title,
|
||||
'link' => $post->link,
|
||||
'content' => $post->content,
|
||||
'excerpt' => $post->excerpt,
|
||||
'lang' => pll_get_post_language($post->ID),
|
||||
];
|
||||
|
||||
$archivo = get_field('documento', $post->ID);
|
||||
@ -399,14 +464,14 @@ class StarterSite extends Site {
|
||||
return $documentos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene los grupos de enlaces de la página "Enlaces"
|
||||
*/
|
||||
/** Obetiene campos de "Enlaces" */
|
||||
private function getEnlaces() {
|
||||
$grupos = [];
|
||||
|
||||
// Buscar página por su slug
|
||||
$page = get_page_by_path('enlaces');
|
||||
// Buscar página por su slug & Cambia dinámicamente según idioma
|
||||
$page = get_page_by_path( pll_current_language() === 'eu' ? 'loturak' : 'enlaces' );
|
||||
//error_log('✅ Página "enlaces" encontrada con ID: ' . $page->ID);
|
||||
|
||||
|
||||
if (!$page) {
|
||||
error_log('🔴 Página "enlaces" no encontrada con get_page_by_path().');
|
||||
@ -425,7 +490,6 @@ class StarterSite extends Site {
|
||||
|
||||
$field = get_field('grupos_enlaces', $page->ID);
|
||||
//error_log('📦 Contenido de get_field: ' . print_r($field, true));
|
||||
//error_log('✅ Página "enlaces" encontrada con ID: ' . $page->ID);
|
||||
|
||||
while (have_rows('grupos_enlaces', $page->ID)) {
|
||||
the_row();
|
||||
@ -473,6 +537,8 @@ class StarterSite extends Site {
|
||||
if (!$pag_servicios_publicos) {
|
||||
error_log('🔴 Página "Servicios públicos" no encontrada.');
|
||||
return [];
|
||||
} else {
|
||||
//error_log('✅ Página "Servicios públicos" encontrada.');
|
||||
}
|
||||
|
||||
$subpaginas = Timber::get_posts([
|
||||
@ -500,6 +566,8 @@ class StarterSite extends Site {
|
||||
if (!$pag_servicios_privados) {
|
||||
error_log('🔴 Página "Servicios privados" no encontrada.');
|
||||
return [];
|
||||
} else {
|
||||
//error_log('✅ Página "Servicios privados" encontrada.');
|
||||
}
|
||||
|
||||
$subpaginas = Timber::get_posts([
|
||||
@ -519,9 +587,57 @@ class StarterSite extends Site {
|
||||
return $subpaginas;
|
||||
}
|
||||
|
||||
private function getSubpaginasServicios() {
|
||||
// Detectar automáticamente si es servicios públicos o privados
|
||||
$current_post = get_post();
|
||||
$slug_actual = $current_post->post_name;
|
||||
|
||||
// Determinar qué página padre buscar según el slug actual
|
||||
if ($slug_actual === 'servicios-publicos') {
|
||||
$path = 'accion-sindical/servicios-publicos';
|
||||
$tipo = 'publicos';
|
||||
} elseif ($slug_actual === 'servicios-privados') {
|
||||
$path = 'accion-sindical/servicios-privados';
|
||||
$tipo = 'privados';
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
|
||||
$pag_servicios = get_page_by_path($path);
|
||||
if (!$pag_servicios) {
|
||||
error_log("🔴 Página '$path' no encontrada.");
|
||||
return [];
|
||||
}
|
||||
|
||||
$subpaginas = Timber::get_posts([
|
||||
'post_type' => 'page',
|
||||
'post_status' => 'publish',
|
||||
'post_parent' => $pag_servicios->ID,
|
||||
'orderby' => 'menu_order',
|
||||
'order' => 'ASC',
|
||||
'posts_per_page' => -1,
|
||||
]);
|
||||
|
||||
foreach ($subpaginas as $pagina) {
|
||||
$pagina->thumbnail = get_the_post_thumbnail_url($pagina->ID);
|
||||
$pagina->tipo_servicio = $tipo; // Para usar en la plantilla si necesitas distinguir
|
||||
}
|
||||
|
||||
return $subpaginas;
|
||||
}
|
||||
|
||||
//Campos de contactos
|
||||
public function getContactoFields() {
|
||||
$post = Timber::get_post();
|
||||
|
||||
if (!$post) {
|
||||
error_log('🔴 No hay páginas de contactos.');
|
||||
return []; // devolver un array vacío para evitar el error
|
||||
}
|
||||
|
||||
$form_shortcode = get_field('etiqueta_formulario', $post->ID); // o el campo ACF donde esté el shortcode
|
||||
//error_log('✅ ID Página "Contactos": ' . $post->ID);
|
||||
|
||||
|
||||
$contactsFields = [
|
||||
'nombre' => get_field('nombre_contacto', $post->ID),
|
||||
@ -538,23 +654,7 @@ class StarterSite extends Site {
|
||||
|
||||
}
|
||||
|
||||
public function getAfiliateFields() {
|
||||
$post = Timber::get_post();
|
||||
|
||||
|
||||
$afiliateFields = [
|
||||
'imagen_afiliate' => get_field('imagen_afiliate', $post->ID),
|
||||
'enlace_boton_afiliate' => get_field('enlace_boton_afiliate', $post->ID),
|
||||
'texto_boton' => get_field('texto_boton', $post->ID),
|
||||
];
|
||||
|
||||
if (empty($afiliateFields['imagen_afiliate']) && empty($afiliateFields['enlace_boton_afiliate'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $afiliateFields;
|
||||
}
|
||||
|
||||
// Excluir páginas de la búsqueda
|
||||
public function exclude_pages_from_search($query) {
|
||||
if (!is_admin() && $query->is_main_query() && $query->is_search()) {
|
||||
$query->set('meta_query', array(
|
||||
@ -572,6 +672,38 @@ class StarterSite extends Site {
|
||||
}
|
||||
}
|
||||
|
||||
// Añadir idiomas de Polylang
|
||||
private function getPolylangData() {
|
||||
$polylang_data = array();
|
||||
|
||||
if (function_exists('pll_the_languages')) {
|
||||
// Idiomas con toda la información
|
||||
$polylang_data['languages'] = pll_the_languages(array(
|
||||
'raw' => 1,
|
||||
'hide_if_no_translation' => 0,
|
||||
'show_flags' => 1,
|
||||
'show_names' => 1
|
||||
));
|
||||
|
||||
// Información del idioma actual
|
||||
$polylang_data['current_language'] = pll_current_language();
|
||||
$polylang_data['current_language_name'] = pll_current_language('name');
|
||||
$polylang_data['default_language'] = pll_default_language();
|
||||
|
||||
// DEBUG: Escribir en el log de errores
|
||||
//error_log('Languages: ' . print_r($polylang_data['languages'], true));
|
||||
//error_log('Current language: ' . $polylang_data['current_language']);
|
||||
//error_log('Default language: ' . $polylang_data['default_language']);
|
||||
|
||||
// URLs de home para cada idioma
|
||||
$polylang_data['home_urls'] = array();
|
||||
foreach ($polylang_data['languages'] as $lang) {
|
||||
$polylang_data['home_urls'][$lang['slug']] = $lang['url'];
|
||||
}
|
||||
}
|
||||
|
||||
return $polylang_data;
|
||||
}
|
||||
|
||||
//Global variables
|
||||
public function add_global_context($context) {
|
||||
@ -579,7 +711,7 @@ class StarterSite extends Site {
|
||||
$context['footer_1'] = get_field('footer_text_1', 'option');
|
||||
$context['footer_2'] = get_field('footer_text_2', 'option');
|
||||
$context['recent_posts_noticias'] = $this->recentPostsNews();
|
||||
$context['botones_imagen'] = $this->getBotonesImagen();
|
||||
$context['botones_imagen'] = $this->getBotonesImagen(); //ENLACES
|
||||
$context['redes_sociales'] = $this->getIconsRRSS();
|
||||
$context['logos_header'] = $this->getLogosHeader();
|
||||
$context['videos'] = $this->getVideos();
|
||||
@ -591,7 +723,9 @@ class StarterSite extends Site {
|
||||
$context['subpaginas_servicios_publicos'] = $this->getPaginasServiciosPublicos();
|
||||
$context['subpaginas_servicios_privados'] = $this->getPaginasServiciosPrivados();
|
||||
$context['contacto_info'] = $this->getContactoFields();
|
||||
$context['afiliate_fields'] = $this->getAfiliateFields();
|
||||
//$context['afiliate_fields'] = $this->getAfiliateFields();
|
||||
$context = array_merge($context, $this->getPolylangData());
|
||||
$context['subpaginas_servicios'] = $this->getSubpaginasServicios();
|
||||
|
||||
return $context;
|
||||
}
|
||||
|
Reference in New Issue
Block a user