Esta función te permite generar una breadcrumb personalizada sin depender de plugins. Es útil cuando quieres tener control total sobre la...
Cómo crear una regla “Has Children” en ACF de forma sencilla
Hoy vamos a ver cómo añadir a ACF una regla muy útil llamada Has Children. Esta regla te permite mostrar u ocultar campos dependiendo de si un contenido tiene hijos. Es ideal cuando trabajas con contenidos jerárquicos, como cursos que contienen módulos o lecciones.
La idea es simple:
Si un curso tiene hijos, mostramos unos campos.
Si no tiene hijos, mostramos otros.
Vamos paso a paso.
¿Para qué sirve esta regla?
Imagina que tienes un CPT llamado curso. Algunos cursos son “padres” y contienen otros cursos dentro. Otros son “hijos” y no contienen nada.
Con esta regla podrás:
Mostrar campos solo en cursos que tienen módulos.
Mostrar otros campos solo en cursos que son lecciones.
Mantener el panel de edición limpio y adaptado a cada caso.
Es una forma muy práctica de mejorar la experiencia de quien edita los contenidos.
El código completo
Aquí tienes el snippet listo para usar. Recuerda que está escapado para que puedas copiarlo sin problemas.
class CustomPostType {
public $nombre;
public $nombre_plural;
public $genero;
public $args;
function __construct($name, $plural_name, $genre, $args = array()) {
$this->nombre = $name;
$this->nombre_plural = $plural_name;
$this->genero = $genre;
$this->args = (array)$args;
$this->init(array(&$this, "register_post_type"));
}
function init($callback) {
add_action("init", $callback);
}
function register_post_type() {
$label_name = ucwords($this->nombre);
$label_plural_name = $this->nombre_plural;
$label_genre = $this->genero;
$labels = array(
'name' => $label_plural_name,
'singular_name' => $label_name,
'add_new' => 'Añadir nuev' . $label_genre,
'add_new_item' => 'Añadir nuev' . $label_genre . $label_name,
'edit_item' => 'Editar ' . $label_name,
'new_item' => 'Nuev' . $label_genre . $label_name,
'all_items' => 'Tod' . $label_genre . 's l' . $label_genre . 's ' . $label_plural_name,
'view_item' => 'Ver ' . $label_name,
'search_items' => 'Buscar ' . $label_plural_name,
'not_found' => 'No se encuentran ' . $label_plural_name,
'not_found_in_trash' => 'No se encuentran ' . $label_plural_name,
'parent_item_colon' => '',
'menu_name' => $label_plural_name
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'query_var' => true,
'hierarchical' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'exclude_from_search' => true,
'menu_icon' => 'dashicons-admin-post',
'taxonomies' => array( 'category', 'post_tag' ),
'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields', 'page-attributes' ),
'capability_type' => 'post',
'has_archive' => true
);
$args = array_merge($args, $this->args);
register_post_type($this->nombre, $args);
}
}¿Qué hace este código?
Vamos a explicarlo de forma clara:
1. Añade una nueva regla a ACF
Le dice a ACF que existe una regla llamada Has Children dentro de la categoría “Post”.
2. Define las opciones
La regla tendrá dos valores:
Sí → el contenido tiene hijos
No → el contenido no tiene hijos
3. Comprueba si el contenido tiene hijos
El código mira si el contenido actual:
Es del tipo curso
Tiene al menos un hijo
Y según eso, decide si la regla se cumple o no.
¿Cómo lo usas en ACF?
Cuando crees un grupo de campos, podrás elegir:
Location → Post → Has Children → Sí/No
Y así decides cuándo mostrar ese grupo.
Quizás te interese ...
Esta regla sirve para detectar si un contenido tiene un padre asignado. Es muy útil cuando trabajas con contenidos jerárquicos, como cursos...
Crear Custom Post Types en WordPress puede ser relativamente sencillo, podemos utilizar un plugin o crearlos cada vez por cada uno que...
En ocasiones los títulos de nuestros proyectos son demasiado extensos como para mostrarlos completos en las migas de pan de nuestro sitio web,...
Valoraciones
Sé el primero en valorar