Carbon Fields vs ACF PRO: bloki Gutenberg

  • 07.10.2024
  • 99
  • Czas czytania: 10 min
  • Kategoria:Dev

Ten artykuł porównuje Carbon Fields i ACF PRO pod kątem tworzenia bloków Gutenberga w WordPressie. Przedstawia ich funkcje, wydajność, zalety i wady, pomagając programistom wybrać najlepsze narzędzie do tworzenia własnych bloków.

Carbon Fields vs ACF PRO: bloki Gutenberg

Carbon Fields to biblioteka WordPressa służąca do tworzenia i zarządzania dedykowanymi polami za pomocą prostego API. Umożliwia programistom łatwe dodawanie pól do wpisów, taksonomii, użytkowników, komentarzy i widgetów. Obsługuje również bloki Gutenberg oraz pola powtarzalne.

Carbon Fields jest bezpłatny, ma otwarty kod źródłowy, jest kompatybilny z PHP 5.3+ i może być wykorzystywany w projektach komercyjnych. Obsługuje również pola meta oraz dynamiczne interfejsy, które pozwalają rozszerzyć jego funkcjonalność.

Jeśli tworzysz motywy z wykorzystaniem OOP i automatycznego ładowania klas, praca z Carbon Fields będzie dla Ciebie prosta i wygodna. Bibliotekę można zainstalować za pomocą Composera.

Zalety Carbon Fields:

  • Brak interfejsu panelu administracyjnego do tworzenia pól — pola są tworzone wyłącznie za pomocą kodu, co zmniejsza ryzyko przypadkowej zmiany ich nazw przez klientów i w konsekwencji uszkodzenia działania kodu.
  • Duży wybór gotowych typów pól.
  • Elastyczność oraz możliwość rozszerzania biblioteki i tworzenia własnych pól.
  • Bardzo dobra dokumentacja zawierająca przykłady.
  • Bezpłatna, z otwartym kodem źródłowym i możliwością wykorzystania w dowolnym projekcie komercyjnym.
  • Obsługa starszych wersji PHP oraz pełna kompatybilność z PHP 8.3.

Wady Carbon Fields:

  • Do implementacji pól wymagana jest znajomość OOP.
  • Instalacja odbywa się za pomocą Composera, z którym niektórzy programiści mogą nie być jeszcze zaznajomieni. (Jeśli potrzebujesz pomocy, przeczytaj ten artykuł dotyczący korzystania z Composera w motywie lub wtyczce).
  • Niepełny interfejs bloków Gutenberg wyświetla jedynie pola, bez wizualnego podglądu, który oferuje ACF PRO.

Kod krok po kroku — integracja Carbon Fields

Zaczniemy od zainicjalizowania Composera w katalogu motywu za pomocą polecenia composer init i udzielenia odpowiedzi na kilka pytań.

Composer init screen

Następnie powinny zostać utworzone folder vendor oraz plik composer.json. Kolejnym krokiem jest zainstalowanie Carbon Fields za pomocą polecenia:

composer require htmlburger/carbon-fields
Composer json screen

Dodaj poniższy kod do pliku functions.php, aby wczytać główny plik biblioteki:

<?php
/** 
* Connect library startup file 
* 
* @return void 
*/
function crb_load() {
    require_once('vendor/autoload.php');
    \Carbon_Fields\Carbon_Fields::boot();
}

add_action('after_setup_theme', 'crb_load');

Code to Create a Gutenberg Block in Carbon Fields

<?php
/**
 * Add Block FAQ.
 */
function crb_add_gutenberg_block() {
    // FAQ block.
    Block::make(
       __( 'FAQ', 'iwpdev' )
    )->add_fields(
       [
          Field::make(
             'complex',
             'faq_items',
             __( 'FAQs', 'iwpdev' )
          )->add_fields(
             [
                Field::make( 'text', 'title', __( 'Title', 'iwpdev' ) ),
                Field::make( 'rich_text', 'description', __( 'Description', 'iwpdev' ) ),
             ]
          ),
       ]
    )->set_category(
       'iwpdev',
       'editor-code'
    )->set_render_callback(
       function ( $fields, $attributes, $inner_blocks ) {
          get_template_part(
             'template-parts/blocks/faq',
             'block',
             [
                'attributes' => $attributes,
                'fields'     => $fields,
             ]
          );
       }
    );
}

add_action( 'carbon_fields_register_fields', 'crb_add_gutenberg_block' );

Kod do dołączenia stylów i skryptów Bootstrap 5

<?php
/** 
* Add Bootstrap 5 
* 
* @return void 
*/
function add_bootstrap() {
    wp_enqueue_style('iwp_bootstrap', '//cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css', [], '5.2.3');
    wp_enqueue_script('iwp_bootstrap', '//cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js', ['jquery'], '5.2.3', true);
}
add_action('wp_enqueue_scripts', 'add_bootstrap');

Kod szablonu bloku

<?php
$fields     = $args['fields'];
$attributes = $args['attributes'];

if ( ! empty( $fields['faq_items'] ) ) {
    ?>
    <div class="accordion" id="accordionPanelsStayOpenExample">
       <?php foreach ( $fields['faq_items'] as $key => $item ) { ?>
          <div class="accordion-item">
             <h2 class="accordion-header">
                <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
                      aria-expanded="false"
                      data-bs-target="#<?php echo esc_html( 'accord-' . $key ); ?>">
                   <?php echo esc_html( $item['title'] ?? '' ); ?>
                </button>
             </h2>
             <div id="<?php echo esc_html( 'accord-' . $key ); ?>" class="accordion-collapse collapse"
                 aria-labelledby="panelsStayOpen-headingOne">
                <div class="accordion-body">
                   <?php echo wp_kses_post( wpautop( $item['description'] ?? '' ) ); ?>
                </div>
             </div>
          </div>
       <?php } ?>
    </div>
    <?php
}

Na tym etapie nasz blok Gutenberg powinien wyglądać tak, jak przedstawiono na poniższych zrzutach ekranu.

Blog faq in admin panel
FAQ block in front-end

Oto wyniki, które uzyskaliśmy:

  • Czas generowania strony: 0,2100 s
  • Maksymalne zużycie pamięci: 6,7 MB
  • Zapytania do bazy danych: 32
  • Czas wykonywania zapytań do bazy danych: 0,0104 s
  • Liczba załadowanych skryptów: 10
  • Liczba załadowanych arkuszy stylów: 24
/** 
* FAQ register block. 
* 
* @return void 
*/
function register_gutenberg_blocks() {
    if (function_exists('acf_register_block')) {
        acf_register_block_type([
            'name' => 'FAQ',
            'title' => __('FAQ', 'iwpdev'),
            'description' => __('FAQ', 'iwpdev'),
            'category' => 'acf-blocks',
            'post_types' => ['page'],
            'supports' => ['anchor' => true, 'align' => ['full', 'wide'], 'jsx' => true],
            'render_template' => 'template-parts/block/faq.php',
        ]);
    }
}
add_action('acf/init', 'register_gutenberg_blocks');

Tworzymy blok w panelu administracyjnym, korzystając z jednego pola repeater zawierającego dwa pola podrzędne: jedno dla tytułu, a drugie dla treści.

Nie zapomnij wybrać opcji renderowania szablonu dla tego bloku, który został zarejestrowany w powyższym kodzie.

ACF Pro block fields

Jeśli wszystko zostało wykonane poprawnie, powinieneś zobaczyć ten blok w formie przedstawionej na poniższych zrzutach ekranu.

FAQ ACF block in admin panel

Block Template Code

<?php

$faq_arg = get_field('faq');
if (!empty($faq_arg)) { ?>
    <div class="accordion" id="accordionPanelsStayOpenExample">
        <?php foreach ($faq_arg as $key => $item) { ?>
            <div class="accordion-item">
                <h2 class="accordion-header">
                    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#<?php echo esc_html('accord-' . $key); ?>">
                        <?php echo esc_html($item['title'] ?? ''); ?>
                    </button>
                </h2>
                <div id="<?php echo esc_html('accord-' . $key); ?>" class="accordion-collapse collapse" aria-labelledby="panelsStayOpen-headingOne">
                    <div class="accordion-body">
                        <?php echo wp_kses_post(wpautop($item['description'] ?? '')); ?>
                    </div>
                </div>
            </div>
        <?php } ?>
    </div>
<?php }

Oto wyniki, które uzyskaliśmy z ACF PRO:

  • Czas generowania strony: 0,4336 s
  • Maksymalne zużycie pamięci: 8,1 MB
  • Zapytania do bazy danych: 38
  • Czas wykonywania zapytań do bazy danych: 0,0109 s
  • Liczba załadowanych skryptów: 8
  • Liczba załadowanych arkuszy stylów: 24
Nazwa parametruACFCarbon Fields
Czas generowania strony–+
Maksymalne zużycie pamięci–+
Zapytania do bazy danych–+
Czas wykonywania zapytań do bazy danych–+
Liczba załadowanych skryptów+–
Liczba załadowanych arkuszy stylów++
Szybkość tworzenia pól+–

Podsumowanie i pełne porównanie

Carbon Fields jest szybszy i bardziej wydajny pod względem zużycia zasobów, szczególnie jeśli Twój motyw zawiera wiele dedykowanych bloków, co może zapewnić niewielką poprawę szybkości działania strony. Biblioteka działa niezawodnie zarówno na starszych, jak i nowszych wersjach PHP. Klienci nie mogą zmieniać parametrów pól, co pomaga zachować stabilność kodu — jest to szczególnie istotne w przypadku dużych projektów.

ACF to świetne rozwiązanie do szybkiego tworzenia bloków i wdrażania ich bez konieczności posiadania zaawansowanej wiedzy programistycznej. Wadą jest jednak koszt oraz dłuższy czas generowania bloków po stronie front-endu.

Powiązane wpisy

Wskazówki i spostrzeżenia z mojej drogi zawodowej

Krytyczne podatności PHP2Shell (CVE-2026-109618 i CVE-2026-109619): Analiza i instrukcja naprawy dla VPS

Krytyczne podatności PHP2Shell (CVE-2026-109618 i CVE-2026-109619): Analiza i instrukcja naprawy dla VPS

  • 23.10.2026
  • 16
Jak korzystać z autoloadingu Composera w WordPressie

Jak korzystać z autoloadingu Composera w WordPressie

  • 02.10.2026
  • 122
Przeniesienie strony ze środowiska lokalnego na serwer za pomocą dostępu SSH

Przeniesienie strony ze środowiska lokalnego na serwer za pomocą dostępu SSH

  • 02.10.2026
  • 119
Wszystkie wpisy

Gotowy, aby wynieść swój projekt
na wyższy poziom?

Wprowadźmy Twoją wizję w życie dzięki profesjonalnemu tworzeniu stron i dedykowanym rozwiązaniom.
Skontaktuj się z nami już teraz i rozpocznijmy pracę nad przekształceniem Twoich pomysłów w rzeczywistość!