1. Empezando | Field Forge - Campos personalizados, diseñados para la velocidad
Descargar Iniciar sesión

1. Empezando

Diagnósticos Compartidos de Forge Suite

Cuando Field Forge está activo, el panel compartido Forge Suite > Configuración y Salud está disponible en el administrador de WordPress. Su acción AJAX de solo lectura es forge_suite_health_check; requiere manage_options y el nonce localizado forge_suite_health_check. La respuesta devuelve diagnósticos para plugins de Forge activos, registros de licencia locales, preparación del widget de créditos, API de Avakode /health, enlaces permanentes y plugins de origen de migración/integración como ACF y ACF Pro. No importa datos de ACF, crea grupos de campos, escribe valores de campos, llama a puntos finales de IA, gasta créditos o cambia el estado de licencia/Freemius.

Haciendo que tu Tema Funcione con Field Forge

Field Forge almacena valores en tablas de base de datos personalizadas (wp_fieldforge_values) en lugar de wp_postmeta. Proporciona una capa de función compatible con ACF para que el código de tema existente funcione sin modificaciones. Esto significa que puedes usar get_field(), the_field(), have_rows() y todas las demás funciones familiares: Field Forge las registra automáticamente cuando ACF no está activo. Durante las solicitudes de activación de ACF, Field Forge se remite a ACF para que ACF Pro pueda ser habilitado para migración sin un fatal de redeclaración de PHP.

Comprobando si Field Forge está activo:
php
// functions.php -- ensure field functions are always available
if ( ! function_exists( 'get_field' ) ) {
    // Field Forge (or ACF) is not active -- provide fallbacks
    function get_field( $selector, $post_id = false ) {
        return get_post_meta( $post_id ?: get_the_ID(), $selector, true );
    }
}

Este patrón asegura que tu tema nunca se rompa incluso si Field Forge está desactivado. La alternativa lee desde wp_postmeta, que es donde WordPress estándar almacena campos personalizados.

Comprobando específicamente Field Forge:
php
// Check for Field Forge (not ACF)
if ( defined( 'FIELDFORGE_VERSION' ) ) {
    // Field Forge-specific code here
    $version = FIELDFORGE_VERSION; // e.g., '1.2.0'
}

// Check for Field Forge PRO features
if ( defined( 'FIELDFORGE_PRO' ) && FIELDFORGE_PRO ) {
    // PRO-only code: repeaters, flexible content, options pages, etc.
}
Acceso básico a campos en una plantilla:
php
<?php
// single.php -- display custom fields on a post
$subtitle = get_field( 'subtitle' );
$hero_image = get_field( 'hero_image' ); // Returns array when return_format = 'array'

if ( $subtitle ) : ?>
    <h2 class="entry-subtitle"><?php echo esc_html( $subtitle ); ?></h2>
<?php endif; ?>

<?php if ( $hero_image ) : ?>
    <img src="<?php echo esc_url( $hero_image['url'] ); ?>"
         alt="<?php echo esc_attr( $hero_image['alt'] ); ?>"
         width="<?php echo esc_attr( $hero_image['width'] ); ?>"
         height="<?php echo esc_attr( $hero_image['height'] ); ?>">
<?php endif; ?>
Mostrando un campo directamente:
php
<p class="lead"><?php the_field( 'lead_text' ); ?></p>
Usando campos en plantillas de archivo:
php
<?php // archive.php or index.php
if ( have_posts() ) :
    while ( have_posts() ) : the_post(); ?>
        <article class="post-card">
            <?php $thumb = get_field( 'card_thumbnail' ); ?>
            <?php if ( $thumb ) : ?>
                <img src="<?php echo esc_url( $thumb['url'] ); ?>"
                     alt="<?php echo esc_attr( $thumb['alt'] ); ?>"
                     class="post-card__image">
            <?php endif; ?>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <p><?php the_field( 'excerpt_text' ); ?></p>
        </article>
    <?php endwhile;
endif; ?>
Usando campos en una plantilla de página:
php
<?php
/**
 * Template Name: About Us
 */
get_header();

$team_photo   = get_field( 'team_photo' );
$mission      = get_field( 'mission_statement' );
$founded_year = get_field( 'founded_year' );
?>

<main class="about-page">
    <section class="about-hero">
        <?php if ( $team_photo ) : ?>
            <img src="<?php echo esc_url( $team_photo['url'] ); ?>"
                 alt="<?php echo esc_attr( $team_photo['alt'] ); ?>">
        <?php endif; ?>
        <div class="about-hero__content">
            <h1><?php the_title(); ?></h1>
            <?php if ( $mission ) : ?>
                <blockquote><?php echo esc_html( $mission ); ?></blockquote>
            <?php endif; ?>
            <?php if ( $founded_year ) : ?>
                <p class="founded">Established <?php echo esc_html( $founded_year ); ?></p>
            <?php endif; ?>
        </div>
    </section>
</main>

<?php get_footer(); ?>

Declaración de Soporte del Tema

No se requiere ninguna llamada especial add_theme_support(). Field Forge activa su capa de compatibilidad automáticamente cuando ACF no está activo. Si ACF está activo junto a Field Forge, las funciones de ACF tienen prioridad y Field Forge actúa solo como un backend de almacenamiento. La misma protección se aplica durante la activación de wp-admin y la API de plugins de WordPress, por lo que habilitar ACF Pro después de que Field Forge ya esté activo no redeclara get_field().

Estructura Recomendada del Tema

Organiza tus archivos de tema para una integración limpia de Field Forge:

text
my-theme/
  functions.php             # Load field setup, register blocks
  inc/
    fieldforge-setup.php    # Options pages, programmatic field groups
    template-functions.php  # Helper functions wrapping get_field()
  template-parts/
    content-*.php           # Partial templates using fields
    builder/                # Flexible content section templates
  blocks/                   # PHP block templates
  fieldforge-json/          # Local JSON sync directory (PRO)
Creando funciones auxiliares para patrones de campo repetidos:
php
<?php
// inc/template-functions.php

/**
 * Get the hero image URL with a fallback.
 *
 * @param int|false $post_id Post ID or false for current post.
 * @return string Image URL.
 */
function theme_get_hero_image( $post_id = false ) {
    $image = get_field( 'hero_image', $post_id );
    if ( $image && isset( $image['url'] ) ) {
        return $image['url'];
    }
    return get_template_directory_uri() . '/assets/img/default-hero.jpg';
}

/**
 * Render social links from options page.
 */
function theme_render_social_links() {
    $platforms = [ 'facebook', 'twitter', 'instagram', 'linkedin', 'youtube' ];
    echo '<div class="social-links">';
    foreach ( $platforms as $platform ) {
        $url = get_field( 'social_' . $platform, 'options' );
        if ( $url ) {
            printf(
                '<a href="%s" class="social-link social-link--%s" target="_blank" rel="noopener">%s</a>',
                esc_url( $url ),
                esc_attr( $platform ),
                esc_html( ucfirst( $platform ) )
            );
        }
    }
    echo '</div>';
}

Asistente de IA de Forge En línea

¡Hola! Soy el asistente de IA de Field Forge. Pregúntame lo que quieras sobre el plugin — configuración, funciones, resolución de problemas o desarrollo.

Ahora mismo
Con la tecnología de Forge AI · Explorar documentación