?php
/**
* Theme functions and definitions.
*
* For additional information on potential customization options,
* read the developers' documentation:
*
* https://developers.elementor.com/docs/hello-elementor-theme/
*
* @package HelloElementorChild
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
define( 'HELLO_ELEMENTOR_CHILD_VERSION', '2.0.0' );
/**
* Load child theme scripts & styles.
*
* @return void
*/
function hello_elementor_child_scripts_styles() {
wp_enqueue_script( 'custom-script', get_stylesheet_directory_uri() . '/custom.js', array( 'jquery' ) );
wp_enqueue_style(
'hello-elementor-child-style',
get_stylesheet_directory_uri() . '/style.css',
[
'hello-elementor-theme-style',
],
HELLO_ELEMENTOR_CHILD_VERSION
);
}
add_action( 'wp_enqueue_scripts', 'hello_elementor_child_scripts_styles', 20 );
function acfcustom_fn($atts) {
// Definimos los atributos predeterminados
$atts = shortcode_atts(
array(
'field' => '',
'post_id' => get_the_ID(),
),
$atts
);
// Inicializamos $output y asignamos el valor del campo ACF
$output = '';
if (!empty($atts['field'])) {
$output .= get_field($atts['field'], $atts['post_id']);
}
return $output;
}
add_shortcode('acfcustom', 'acfcustom_fn');
function mostrar_titulo_acf_shortcode() {
// 1. Obtener el valor del campo ACF 'titulo' para la página/post actual.
$titulo_acf = get_field('titulo');
// 2. Comprobar si el campo ACF está vacío (incluyendo nulo, falso, o cadena vacía).
if ( empty( $titulo_acf ) ) {
// Si está vacío: Obtener y retornar el título por defecto del post/página.
$titulo_pagina = get_the_title();
return '
' . esc_html( $titulo_pagina ) . '
';
} else {
// Si NO está vacío: Retornar el valor del campo ACF.
return '
' . esc_html( $titulo_acf ) . '
';
}
}
// 3. Registrar el shortcode para que pueda usarse como [mostrar_titulo].
add_shortcode( 'mostrar_titulo', 'mostrar_titulo_acf_shortcode' );
function agregar_clase_interior_al_body( $classes ) {
// La función is_front_page() verifica si es la página frontal estática O la página de inicio de blog.
// Si NO es la página frontal, agrega la clase 'internas'.
if ( ! is_front_page() ) {
// Añade tu clase personalizada al array de clases
$classes[] = 'internas';
}
// Alternativamente, si tu página de inicio es el índice de entradas del blog,
// puedes usar is_home():
/*
if ( ! is_home() ) {
$classes[] = 'internas';
}
*/
return $classes;
}
add_filter( 'body_class', 'agregar_clase_interior_al_body' );
/**
* Agrega una clase al body si la categoría de producto de WooCommerce es la última hija (sin subcategorías).
*
* @param array $classes Clases CSS existentes para el body.
* @return array Las clases CSS modificadas.
*/
function agregar_clase_ultima_subcategoria_wc( $classes ) {
// 1. Verificar si estamos en una página de archivo de categoría de producto de WooCommerce
if ( is_product_category() ) {
// 2. Obtener el objeto de la categoría consultada actualmente
$current_term = get_queried_object();
// Asegurarse de que tenemos un objeto y es de la taxonomía correcta
if ( $current_term && $current_term->taxonomy === 'product_cat' ) {
// 3. Verificar si la categoría actual tiene hijos (subcategorías)
// Usamos get_terms para buscar términos hijos con el ID de la categoría actual como 'parent'
$children = get_terms( 'product_cat', array(
'parent' => $current_term->term_id,
'hide_empty' => false // Queremos saber si existen, aunque estén vacías
) );
// 4. Si la categoría NO tiene hijos, es la "última hija" o una categoría de nivel superior sin hijos.
// Para ser una "última hija" en el contexto de una jerarquía, debe no tener hijos.
if ( empty( $children ) ) {
$classes[] = 'no-tiene-subcategorias';
}
else {
$classes[] = 'si-tiene-subcategorias';
}
}
}
return $classes;
}
add_filter( 'body_class', 'agregar_clase_ultima_subcategoria_wc' );
function disable_comments_globally() {
// Cierra comentarios en todos los tipos de publicación
$post_types = get_post_types();
foreach ($post_types as $post_type) {
if(post_type_supports($post_type, 'comments')) {
remove_post_type_support($post_type, 'comments');
remove_post_type_support($post_type, 'trackbacks');
}
}
}
add_action('admin_init', 'disable_comments_globally');
// Elimina la caja de comentarios del frontend
function filter_comment_form_output( $output ) {
return '';
}
add_filter( 'comment_form_defaults', 'filter_comment_form_output', 20 );
// Ocultar elementos relacionados con comentarios en el menú de administración
function disable_comments_admin_menu() {
remove_menu_page('edit-comments.php'); // Elimina la opción 'Comentarios' del menú principal
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal'); // Elimina el widget del escritorio
}
add_action('admin_menu', 'disable_comments_admin_menu');
function disable_comments_redirection() {
if ( is_singular() && comments_open() ) {
// Redirecciona si la página tiene comentarios abiertos (solo para prevenir)
wp_redirect( home_url() );
exit;
}
// Bloquea el intento de envío directo
if ( is_admin() ) {
return;
}
if ( ! empty( $_SERVER['SCRIPT_FILENAME'] ) && 'wp-comments-post.php' == basename( $_SERVER['SCRIPT_FILENAME'] ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'template_redirect', 'disable_comments_redirection' );
function my_login_redirect( $redirect_to, $request, $user ) {
// Check if the user is an admin
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'autor', $user->roles ) ) {
return $redirect_to; // Send admins to the default dashboard
} else {
return home_url( '/wp-admin/edit.php' ); // Send everyone else here
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
Asistencia Técnica - ApacoopOmitir e ir al contenido
Servicios
sub title
ASISTENCIA TÉCNICA
En APACOOP creemos que detrás de cada fruta de calidad hay un productor bien acompañado. Nuestro equipo de ingenieros agrónomos brinda asesoría personalizada a asociados y clientes, apoyándolos desde la siembra hasta la cosecha. Con visitas de campo, diagnóstico y seguimiento constante, promovemos buenas prácticas agrícolas, sostenibilidad y el cumplimiento de altos estándares de calidad. Más que un servicio, es una alianza para impulsar el crecimiento de cada productor.
Desde el 2008 contamos además con una finca experimental, un espacio que inició como centro de pruebas y hoy se ha consolidado como una finca productiva. Con 7 hectáreas 4 de bosque y 3 en producción desarrollamos prácticas sostenibles en cultivos de aguacate y granadilla, fortaleciendo la experiencia técnica con la que acompañamos a los productores.