Cómo crear una regla “Has Children” en ACF de forma sencilla

30 de /abril04 de /2023
3m 44s
wordpress
0 comentarios
366

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.

Valoraciones

Sé el primero en valorar

* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

Quizás te interese ...

Este sitio web utiliza cookies

Utilizamos cookies propias y de terceros para personalizar el contenido, analizar nuestros servicios, ofrecer funciones de redes sociales, analizar el tráfico y mostrarle publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de sus hábitos de navegación.

Permitir todas las cookies Configurar Política de cookies