ACF trong WordPress là gì?

Tôi đã hâm mộ Trường tùy chỉnh nâng cao (ACF) từ lâu rồi. Nó được sử dụng trên hầu hết mọi trang web tôi đã xây dựng hoặc làm việc trong vài năm qua

Đối với những người chưa biết, ACF là một plugin cho phép bạn kiểm soát nhiều hơn nội dung của mình. Nó sử dụng meta bài đăng tùy chỉnh để làm phong phú nội dung của bạn với dữ liệu có cấu trúc. Nó cũng cho phép bạn xây dựng và định cấu hình các trường dữ liệu trong hộp meta khi bạn cập nhật bài đăng, trang, loại bài đăng tùy chỉnh, v.v.

Trước đây, tôi đã sử dụng plugin như một phần của dự án trên trang web Delicious Brains. Tuy nhiên, bài đăng trên blog này đã cho tôi thấy tầm quan trọng của giải pháp bên thứ ba đối với việc phát triển WordPress. Hãy để tôi giải thích…

ACF hoạt động như thế nào

Tôi đã mất một lúc để hiểu ACF làm gì, vì vậy đây là một ví dụ nhanh. Tôi đã sử dụng nó trên một trang web từ thiện cứu hộ chó, nơi người dùng thêm những chú chó mới để phục hồi dưới dạng một loại bài đăng tùy chỉnh. Tuy nhiên, cùng với tên, mô tả, tiêu đề bài đăng và nội dung của chú chó, họ cũng muốn lưu trữ giống và giới tính của chú chó, liên kết tới video và một số ảnh

Để làm điều này, tôi đã tạo một nhóm trường cho dữ liệu này từ menu Trường tùy chỉnh > Nhóm trường > Thêm mới

ACF trong WordPress là gì?

Bạn có thể thêm các trường thuộc nhiều loại khác nhau. Ở đây tôi đã sử dụng các lựa chọn, hộp văn bản, hộp kiểm boolean đơn giản và trường thư viện. Cái sau là tùy chọn ACF Pro và tôi sẽ thảo luận thêm về điều này sau

Đây là cách bạn định cấu hình hộp chọn, hoàn chỉnh với các tùy chọn người dùng

ACF trong WordPress là gì?

Tiếp theo, tôi đã nói rằng nhóm này chỉ nên xuất hiện trên màn hình chỉnh sửa cho loại bài đăng tùy chỉnh

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
3. Có tất cả các loại logic mà bạn có thể sử dụng ở đây, chẳng hạn như loại bài đăng, mẫu, danh mục và vai trò người dùng

ACF trong WordPress là gì?

Tuy nhiên, sức mạnh thực sự của ACF là khi bạn thêm dữ liệu

Thêm dữ liệu vào trường ACF

Màn hình chỉnh sửa trông khác khi làm việc trên bài đăng

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
3. Nó hiển thị một hộp meta tùy chỉnh hoàn chỉnh với các trường đã xác định

ACF trong WordPress là gì?

Điều này làm cho việc thêm tất cả dữ liệu bổ sung trở nên dễ dàng đối với người chỉnh sửa nội dung. Nó cũng cho phép bạn chỉ định chính xác nơi bạn muốn hiển thị dữ liệu trong chủ đề, sử dụng mã hàm

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
5


Nếu không có plugin, tôi phải sử dụng các hộp meta tùy chỉnh mặc định của WordPress, mã hóa các hộp meta phong phú hơn của riêng tôi từ đầu hoặc đánh dấu giống và giới tính của chó vào các nguyên tắc phân loại tùy chỉnh. Tôi thậm chí có thể phải sử dụng thư viện gốc được nhúng bên trong nội dung bài đăng. Rùng mình

ACF nâng tầm WordPress

ACF chính xác là thứ mà WordPress với tư cách là Hệ thống quản lý nội dung (CMS) đã thiếu khi có nhiều quyền kiểm soát hơn đối với nội dung của bạn. Với hơn một triệu lượt cài đặt đang hoạt động, nó đã giúp làm cho nền tảng WordPress trở nên mạnh mẽ hơn và thậm chí có thể góp phần vào sự phát triển của nó

Hơn nữa, các nhà phát triển và đại lý đã tận dụng nó để cung cấp cho khách hàng quyền kiểm soát nội dung của họ mà không cần mã ngắn, trình tạo trang hay thậm chí là

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
6. Các nhà phát triển có toàn quyền kiểm soát nơi dữ liệu xuất hiện trên giao diện người dùng của trang web, tránh các chỉnh sửa không thể tránh khỏi của khách hàng làm hỏng hình ảnh

Trên thực tế, ACF rất phổ biến đối với khách hàng của chúng tôi, chúng tôi đã phải tích hợp thêm với WP Offload Media. Giờ đây, hình ảnh và tính năng cắt xén hoạt động với phương tiện được giảm tải xuống Amazon S3, DigitalOcean Spaces hoặc Google Cloud Storage

Thêm tùy chọn trường bổ sung vào ACF

Phiên bản miễn phí của plugin có rất nhiều chức năng. Tuy nhiên, phiên bản cao cấp là điều cần thiết để có quyền truy cập vào các trường như bộ lặp, bố cục linh hoạt và phòng trưng bày

Ví dụ: chúng tôi đang sử dụng trường Bộ lặp lại để cho phép người dùng hiển thị các lời chứng thực được chọn trong một thanh trượt trên các trang sản phẩm. Bộ lặp chứa trường đối tượng bài đăng lồng nhau

ACF trong WordPress là gì?

Sau đó, nó sẽ xuất hiện khi chỉnh sửa trang, vì vậy chúng tôi có thể kiểm soát lời chứng thực nào sẽ được hiển thị

ACF trong WordPress là gì?

Với các hành động và bộ lọc nằm xung quanh cơ sở mã, ACF luôn là một công cụ cực kỳ thân thiện với nhà phát triển và có thể mở rộng. Nó cũng ưu tiên những cải tiến quan trọng đối với người dùng

Sử dụng tính năng JSON cục bộ

Tuy nhiên, trước đây tôi gặp một số vấn đề là lưu trữ cấu hình trường trong cơ sở dữ liệu, cụ thể là các loại bài đăng tùy chỉnh cho nhóm trường và trường

Điều này có nghĩa là nếu bạn thay đổi định nghĩa trường trên một trang web đang phát triển, thì bạn không thể đẩy cơ sở dữ liệu của mình bằng một giải pháp như WP Migrate DB Pro hoạt động trở lại. Bạn sẽ thấy bảng bài đăng sẽ thay đổi và bạn sẽ mất dữ liệu mới

Đây là sự cố hợp nhất cơ sở dữ liệu lâu đời (đừng để tôi bắt đầu…). Tôi đã từng giải quyết vấn đề này bằng cách thực hiện thay đổi trường trên trang web trực tiếp trước. Sau đó, tôi sẽ kéo cơ sở dữ liệu về trang địa phương của mình để tiếp tục phát triển. không lý tưởng

May mắn thay, ACF đã giới thiệu tính năng Local JSON. Điều này làm là cho phép lưu cấu hình trường dưới dạng tệp JSON, có thể đồng bộ hóa với cơ sở dữ liệu

Tính năng tuyệt vời này giải quyết vấn đề hợp nhất cơ sở dữ liệu cho dữ liệu ACF. Điều đó cũng có nghĩa là bạn có thể giữ các tệp JSON dưới sự kiểm soát phiên bản và biến cấu hình thành một phần của quy trình triển khai tệp điển hình của bạn. Trong khi làm việc với plugin trên trang web của chúng tôi, tôi đã thêm một số điều chỉnh để tích hợp nó nhiều hơn với Git và thiết lập đa môi trường của chúng tôi

  • Tôi đã xác định thư mục JSON cho thư mục
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    7 của chúng tôi bên ngoài chủ đề (vì nó có thể thay đổi)
  • Mục menu “Trường tùy chỉnh” sẽ chỉ hiển thị trên môi trường phát triển
  • Các tệp JSON có cấu hình cơ sở dữ liệu lỗi thời trên
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    8 sẽ tự động đồng bộ hóa

Mặc dù hiện tại chúng tôi có Trình chỉnh sửa khối WordPress (trước đây gọi là Gutenberg), tôi cho rằng ACF vẫn rất quan trọng để tạo trải nghiệm chỉnh sửa tuyệt vời

Sử dụng Trình chỉnh sửa khối cùng với ACF

Trình chỉnh sửa khối cung cấp một hướng chỉnh sửa nội dung khác với ACF. Bạn tạo nội dung bằng cách sử dụng Khối thay vì lưu trữ nội dung đó dưới dạng dữ liệu meta bài đăng, điều này mang lại cho bạn sự linh hoạt trong thiết kế

Lúc đầu, Trình chỉnh sửa khối không hỗ trợ hộp meta. Chúng thậm chí còn bị xóa khỏi màn hình “Chỉnh sửa bài đăng”, khiến rất nhiều người phẫn nộ. Hiện tại, hỗ trợ đã được thêm cho các hộp meta. Chúng xuất hiện bên dưới Trình chỉnh sửa khối với Giao diện người dùng (UI) tối thiểu, kém tinh tế hơn

Sử dụng Khối thay vì trường cho dữ liệu tùy chỉnh, trình chỉnh sửa mới có khả năng tác động lớn đến tương lai của ACF. Hơn nữa, các trang web mới sẽ ít có khả năng cài đặt công cụ của bên thứ ba hơn khi giờ đây đã có giải pháp gốc

Tuy nhiên, đây không phải là lần đầu tiên những thay đổi cốt lõi được đề xuất đe dọa tương lai của ACF. Một vài năm trước, một nhóm mới đã được thành lập cho Post Meta. Lúc đầu, điều này nghe có vẻ như sẽ giết chết các giải pháp trường tùy chỉnh khác nhau của bên thứ ba

Đã có một loạt các thư viện/khuôn khổ/plugin (CMB, SCB, WPAlchemy, ACF, Pods), hiện tại đã hoàn thành vai trò này. Chúng tôi sẽ coi đây là những phần tiền truyện tâm linh cho một plugin mới xứng đáng với cốt lõi

Vào thời điểm đó, tôi đã viết về việc quyết định giới thiệu các tính năng cạnh tranh mới này có thể khiến một số plugin trở nên dư thừa như thế nào. Cuối cùng, dự án Post Meta chẳng đi đến đâu, biên tập viên mới đã xuất hiện và ACF đã vượt qua cơn bão

ACF không chỉ phục hồi trở lại, họ còn thích nghi. Kết quả là thứ kết hợp sức mạnh của ACF và tính linh hoạt của Khối tùy chỉnh. Hãy nói về điều này tiếp theo

Cách xây dựng khối bằng ACF

Rõ ràng, Khối tùy chỉnh có thể có lợi. Tuy nhiên, quy trình kỹ thuật để tạo ra chúng rất phức tạp. Khối ACF lấp đầy khoảng trống

Khối ACF tích hợp với các trường tùy chỉnh hiện tại của bạn, năng động và có thể tùy chỉnh, đồng thời cho phép bạn đạt được hai điều

  • Bạn có thể đưa các trường tùy chỉnh hiện tại của mình vào hệ sinh thái Block Editor
  • Bạn có thể tạo các giải pháp nội tuyến tùy chỉnh

Chúng được hiển thị bằng tệp mẫu PHP hoặc hàm

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
0 – vì vậy nó giống như phát triển một chủ đề. Chúng cũng duy trì khả năng tương thích cốt lõi của WordPress, vì vậy bạn thậm chí có thể tạo các Khối có thể tái sử dụng thông qua khung

ACF trong WordPress là gì?

Mặc dù Khối ACF không phải là một cái nạng, nhưng tôi muốn nói rằng nếu kỹ năng Phản ứng của bạn vẫn còn sơ sài, bạn chắc chắn sẽ muốn tìm hiểu thêm về chúng. Họ sẽ cho phép bạn tận dụng sức mạnh của Trình chỉnh sửa khối trong khi vẫn ở trong tệp

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
1 quen thuộc

Xây dựng khối ACF

Hãy chỉ cho bạn cách xây dựng Khối ACF. Phiên bản Pro của công cụ đã bao gồm chức năng này từ ACF 5. 8, vậy là nó đã ở với chúng tôi được khoảng hai năm rồi. Đây là mã đăng ký khối ví dụ siêu đơn giản

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}

Từ đây, bạn sẽ muốn tạo một nhóm trường và hiển thị Khối. Trước đây, bạn sẽ thực hiện việc này từ bên trong Trường tùy chỉnh > Màn hình Nhóm trường trong WordPress

ACF trong WordPress là gì?

Tại đây, thêm nhóm trường của bạn và điền vào như bình thường. Tuy nhiên, trong hộp meta “Vị trí”, bạn sẽ muốn sử dụng quy tắc “Chặn” để chọn (trong trường hợp này) Khối chứng thực

ACF trong WordPress là gì?

Cuối cùng, bạn sẽ cần kết xuất Khối. Điều này tuân theo quy trình tương tự mà bạn có thể đã quen với các trường tùy chỉnh

  • Tạo tệp mẫu cho chủ đề của bạn dựa trên tham số được cung cấp trong cài đặt
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    2 khi đăng ký Khối lần đầu
  • Chọn phương pháp phù hợp để hiển thị Khối
  • Enqueue phong cách và kịch bản của bạn

Lưu ý rằng chức năng

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
3 cung cấp cài đặt
add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
4,
add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
5 và
add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
6

ACF trong WordPress là gì?

Nhìn chung, các Khối không nên thay thế mọi hộp meta trường tùy chỉnh khi cần, nhưng chúng sẽ cho phép bạn tận dụng lợi thế của việc tạo nội dung trong trình chỉnh sửa

Hỗ trợ 'InnerBlocks'

Block Editor cũng có chức năng giúp bạn làm việc với ACF Blocks. Về cơ bản, InnerBlocks cho phép bạn chèn bất kỳ Khối mới nào vào Khối ACF của bạn

Chúng có thể là Khối tùy chỉnh hoặc Khối cốt lõi và bạn có thể sử dụng các trường “Tiêu đề”, “Nội dung” và “Nút” hiện tại trong Khối ACF của riêng bạn

Dưới đây là hướng dẫn nhanh để thiết lập và chạy. Để bắt đầu sử dụng InnerBlocks, bạn đưa

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
7 vào mảng
add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
8

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
1

Sau đó, bạn sẽ cần phải

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
9 thẻ HTML
add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
10 trong mẫu Khối của mình

add_action('acf/init', 'my_acf_init');
function my_acf_init() {
        // check function exists
        if( function_exists('acf_register_block_type') ) {
                // register a testimonial block
                acf_register_block_type(array(
                        'name'          => 'testimonial',
                        'title'         => __('Testimonial'),
                        'description'       => __('A custom testimonial block.'),
                        'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                        'render_callback'   => 'my_acf_bock_render_callback',
                        'category'      => 'formatting',
                        'icon'          => 'admin-comments',
                        'keywords'      => array( 'testimonial', 'quote' ),
                ));
        }
}
4

Đây chỉ là một ví dụ đơn giản, nhưng bạn có thể làm được nhiều điều hơn nữa với InnerBlocks

Các lựa chọn thay thế cho Khối ACF

Tất nhiên, ACF sẽ không phải là giải pháp duy nhất để tạo Khối. Như vậy, bản năng đầu tiên của bạn có thể sẽ là một bản dựng tùy chỉnh

Trước đây, chúng tôi đã đề cập đến cách tạo Khối 'vanilla', nhưng trước khi bắt đầu, bạn sẽ cần có kiến ​​thức về React

Ngoài ra còn có các plugin WordPress cho phép bạn lắp ráp các Khối từ nhiều thành phần khác nhau, nhưng tôi muốn nói rằng chúng không thực sự dành cho các nhà phát triển mà là 'những người mày mò người dùng cuối'. Lazy Blocks được cập nhật thường xuyên, vì vậy đây là một lựa chọn tốt nếu bạn muốn thử nghiệm những gì nó cung cấp

Tương lai của ACF

Kể từ khi phát hành, ACF đã là một plugin bổ sung quan trọng cho WordPress. Nó mở rộng, làm phong phú và làm cho nền tảng trở nên hữu ích hơn. Tôi không nghĩ rằng tôi có thể xây dựng các trang web mà không có nó

Tuy nhiên, việc kết hợp Trình chỉnh sửa khối và Khối ACF là một điều tuyệt vời – đó là một khoản đầu tư tuyệt vời cho tương lai của CMS. Nó sẽ giúp hạ thấp rào cản gia nhập cho các nhà phát triển để mở rộng Trình chỉnh sửa khối mà không cần bắt đầu quá trình học tập dốc của React. Về lâu dài, những người đang nỗ lực hết mình vì sự phát triển của Trình chỉnh sửa khối có thể coi đây là một chiến thắng

Kể từ khi giới thiệu Trình chỉnh sửa khối, bạn đang sử dụng gì để xây dựng trang web?

Mục nhập này đã được đăng trong WP Offload Media, Quy trình làm việc và được gắn thẻ Mẹo phát triển, Gutenberg, Trường tùy chỉnh nâng cao, Khối Gutenberg, ACF

Giới thiệu về tác giả

Iain Poulson Giám đốc sản phẩm

Iain là giám đốc sản phẩm có trụ sở tại miền nam nước Anh. Anh ấy cũng điều hành nhiều sản phẩm WordPress. Anh ấy giúp mọi người mua và bán doanh nghiệp WordPress và viết bản tin hàng tháng về xu hướng WordPress

@polevaultweb. com

  • chrismccoy nói.

    tôi vẫn thích cách cũ hơn, nhưng ACF tiết kiệm rất nhiều thời gian và phiên bản pro có xuất ra mã cũng tiện dụng

  • Leho Kraav nói.

    ACF – có hệ thống meta tuyệt vời, không có nhóm quản lý loại bài đăng – có quản lý loại bài đăng và các tính năng khác, nhưng vẫn chưa bắt kịp với quản lý meta hi-fi thực sự Chưa có giải pháp giành chiến thắng duy nhất

    • Phil Braun nói.

      Hệ sinh thái của ACF rộng lớn và năng động hơn rất nhiều so với Pods, đối với tôi, mọi lợi thế quản lý loại bài đăng có thể có chỉ đơn giản là biến mất. Ngoài ra, tôi thậm chí không thể nhớ Pods đã hứa hẹn phiên bản 3 của họ trong bao lâu. 0

    • JorgeLuisBorges nói.

      Tại sao ACF sẽ quản lý các loại bài đăng cho bạn? . Đối với tôi Pods đang làm hai việc theo cách OK. ACF đang làm một điều tuyệt vời

    • Iain nói.

      Đăng ký các loại bài đăng trong mã dễ dàng hơn nhiều so với các trường tùy chỉnh, đó là lý do tại sao tôi chưa bao giờ tìm kiếm một plugin để làm điều đó cho mình

    • Tim nói.

      CPT UI có giao diện người dùng khá tốt để quản lý CPT. Vâng, đó là một plugin khác, nhưng 2 plugin nhỏ hơn không nhất thiết phải tệ hơn 1 plugin lớn hơn. Và nếu muốn, bạn có thể xuất tác phẩm của CPT UI sang PHP và không cần cài đặt plugin khi sản xuất

    • Eric M. nói.

      Tôi đồng ý, nhưng anh bạn, Pods có tài liệu TUYỆT VỜI. Tôi đã thiết lập và chạy trên ACF trong 5 phút và tài liệu của họ thật tuyệt vời. Tôi đã sử dụng Pods cho một dự án và có rất nhiều cảm giác xung quanh trong bóng tối… và tôi vẫn chưa hiểu hết về nó. 😉

    • Brian J. nói.

      Bạn đã thử Hộp Meta chưa. Tôi đã sử dụng nó trong nhiều năm và nó có mọi thứ mà Pods hoặc ACF làm được. Nó dựa trên mã (với GUI là phần mở rộng), vì vậy bạn cần hiểu PHP. Nhưng sau đó nó siêu nhanh và mạnh mẽ

  • Giá trợ cấp nói.

    Đây là một cách tuyệt vời để bắt đầu với các khối dành cho một số người có thể chậm hơn một chút với Javascript. Đây là một cách tuyệt vời để giúp nhiều nhà phát triển

    • Tim nói.

      Điểm số của các nhà phát triển có giống như một đàn chim không?

  • Phil Braun nói.

    Các khối ACF thực sự, từ những gì tôi đã thử nghiệm nhỏ, thật tuyệt vời nếu một người muốn tránh, ít nhất là vào lúc này, cảm giác giống như một mớ hỗn độn quá phức tạp của mã, khung và phụ thuộc và những thứ không cần thiết đó là Gutenberg, ngay cả khi sử dụng Create-Guten- không thể thiếu . Đối với các dự án nặng hơn một chút, tôi đã làm theo cách mà Bill Erickson đề xuất và chỉ sử dụng các truy vấn siêu dữ liệu WP trong các mẫu, chỉ sử dụng ACF trong phần phụ trợ. Nói chung, tôi không nghĩ rằng mình thậm chí có thể làm việc mà không có ACF Pro, đây thực sự là plugin đầu tiên được cài đặt trong bất kỳ phiên bản Valet+ mới nào

  • Juicebox Interactive nói.

    Chúng tôi thực sự thích phương pháp PHP trực tiếp để lưu trữ các định nghĩa trường. Bạn có thể xuất các nhóm trường hiện có dưới dạng PHP trong Công cụ -> Xuất, nhưng sau khi thực hiện việc này một lúc, bạn có thể tìm hiểu về bản chất định dạng mảng ở nơi bạn đang viết nó từ đầu. Các tệp JSON lộn xộn và khó chỉnh sửa – tốt nhất là giải pháp một phần cho các định nghĩa trường được kiểm soát nguồn. Phương thức PHP cho phép bạn đặt các trường ở bất cứ đâu bạn muốn. Chúng tôi đặt chúng trong các tệp định nghĩa loại bài đăng của mình để toàn bộ mô hình dữ liệu cho loại bài đăng ở một nơi

  • Iain nói.

    Chính xác điều này

  • Maty Grosman nói.

    Bạn đã có thể khắc phục sự cố ACF với Bộ nhớ đệm đối tượng chưa? . Nếu không thì plugin tuyệt vời. Vấn đề được mô tả ở đây. https. //hỗ trợ. từng trang. com/hc/en-us/articles/115002105112-Advanced-Custom-Fields-Pro-and-Object-Cache-Compatibility?mobile_site=true

  • Evan Mullins nói.

    Vâng, tôi cũng là một fan hâm mộ lớn của ACF và đã truyền bá nó trong nhiều năm. Tôi rất muốn xem nó sẽ mang lại những gì khác sau khi gutenberg được phát hành (bản thân tôi vẫn chưa chơi với các khối ACF). Mặc dù vậy, tôi không có đủ điều tốt để nói về ACF. Plugin được làm tốt giúp tăng đáng kể trải nghiệm nhà phát triển của tôi

  • dae nói.

    ACF gần như tăng gấp đôi số lượng siêu dữ liệu được lưu trong bảng postmeta so với các trường tùy chỉnh WP thông thường. Plugin tuyệt vời cho các trang web nhỏ. Hoàn toàn vô dụng và không thể mở rộng cho các dự án lớn hơn

    • Miles Gilmour nói.

      Không, không hoàn toàn vô dụng. Hầu hết nếu không muốn nói là tất cả dữ liệu bổ sung mà ACF lưu chỉ để trình bày khi chỉnh sửa. Nếu bạn chỉ muốn trình bày dữ liệu ở giao diện người dùng, bạn có thể lấy dữ liệu đó bằng hàm get_post_meta tiêu chuẩn

      • dae nói.

        Nếu bạn muốn truy vấn các bài đăng được lọc bởi nhiều hơn 1 trường tùy chỉnh và bạn có vài nghìn bài đăng thì điều đó hoàn toàn không sử dụng được. Bạn sẽ cần các bảng db tùy chỉnh cho điều đó

      • lorenhelgeson nói.

        Sử dụng get_post_meta giảm đáng kể số lượng truy vấn. Nó cũng làm cho dữ liệu có thể di chuyển được – nếu bạn tắt ACF, bạn sẽ không phá vỡ toàn bộ trang web vì bạn không dựa vào các chức năng độc quyền của nó. Sử dụng cùng một phương pháp cho các nguyên tắc phân loại và danh mục phức tạp hơn một chút, vì chúng không sử dụng get_post_meta, nhưng mã thì có sẵn

    • Daniel nói.

      điều chắc chắn. Nhưng có một addon tương đối mới hứa hẹn sẽ lấp đầy khoảng trống này. https. // cái móc. io/downloads/acf-custom-database-tables/ ACF tuyệt vời hơn nữa 😀

  • Eric M. nói.

    ACF là vô giá, và điều gây sốc duy nhất là WordPress đã không mua và đưa nó vào

    • Luca Rosaldi nói.

      Tôi hoàn toàn đồng ý. Nó không thể thiếu đến mức nó chắc chắn phải là một phần cốt lõi

  • Miles Gilmour nói.

    ACF đã nhặt bóng với Gutenberg Blocks. Cuối cùng, có một tùy chọn nhanh cho các loại khối tùy chỉnh giúp Gutenberg trở nên khả thi đối với các studio / đại lý nhỏ hơn, những người không muốn đầu tư nhiều thời gian để học công cụ mới

  • moxy nói.

    Tôi đã sử dụng nó một thời gian, sau đó chuyển sang CMB2 thay thế. Tôi đang lên kế hoạch xem lại nó trong một số dự án sắp tới vì Gutenberg Blocks

    • Jeff Gould nói.

      Tôi cũng đã chuyển sang CMB2 trong một số dự án gần đây nhất mà tôi đã thực hiện và cho đến nay tôi rất hài lòng. Các trường là các mục đơn lẻ trong bảng postmeta, không giới thiệu bất kỳ phương pháp tùy chỉnh nào để truy xuất dữ liệu và định nghĩa trường được viết bằng mã, do đó Git có thể quản lý. Mình thường cài CMB2 làm plugin MU nên cũng không phải lo client vào làm rối tung gì đó. Tôi có giấy phép ACF PRO và nghĩ rằng đó là một sản phẩm tuyệt vời, nhưng hiện tại tôi thích CMB2 hơn một chút

      • Simon nói.

        Tôi cũng vậy - Tôi đã sử dụng CMB2 được khoảng 3 năm, tôi thực sự thích nó vì nó nhẹ hơn rất nhiều khi không có tất cả giao diện người dùng, nội dung JSON, v.v. và nhiều thứ khác nhắm đến các nhà phát triển. Việc thêm các loại trường, quy tắc xác thực, trang tùy chọn, v.v đều rất đơn giản. Cho đến nay, tôi vẫn chưa cần chức năng khối, nhưng nếu có, tôi chắc chắn sẽ xem xét ACF cho các dự án có ngân sách thấp hơn, nhưng có khả năng cuộn các khối của riêng tôi cho các dự án có ngân sách

  • Anonymous nói.

    Về cơ bản, tôi chọn WordPress cho hầu hết các dự án vì ACF. Các trường ma trận trong Craft đã gần, nhưng chưa hoàn thiện

  • Adam Patterson nói.

    Mong muốn lớn nhất của tôi và điều mà tôi đã gửi cho một yêu cầu tính năng là khả năng tạo và sử dụng lại một khối dữ liệu có cấu trúc. Tôi đã sử dụng ACF trên mọi trang web mà tôi đã xây dựng trong nhiều năm nay và một trong những khía cạnh quan trọng nhất trong các chủ đề của tôi là tạo ra

    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    11 về cơ bản hoàn toàn giống với
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    12 nhưng thay vì yêu cầu tệp mẫu, nó được bao gồm. Điều này cho phép tôi thực hiện một cuộc gọi
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    13 duy nhất một lần có thể trong tiêu đề hoặc tệp chủ đề và có sẵn dữ liệu đó cho tất cả các phần mẫu được tải trên trang đó. Do cách tiếp cận này, tôi cũng sử dụng Nhóm cho các khối dữ liệu không cần Bộ lặp. Tôi cũng di chuyển đường dẫn ACF JSON sang chủ đề con của mình và dựa vào chủ đề Cha mẹ của tôi như một gói để bắt đầu và chạy nhanh hơn

    • Phil Braun nói.

      Bạn đã thấy addon mới này chưa. https. // acf-thành phần-trường. kẹo cao su. tôi?

      • Adam Patterson nói.

        Hay quá cảm ơn bạn đã chia sẻ

      • David McDonald nói.

        trường này khác với trường ACF Clone như thế nào?

  • Richard Neville nói.

    Đó là một plugin tuyệt vời, tôi đoán nó đã tiết kiệm được hàng triệu triệu dòng mã trong nhiều năm cho các nhà phát triển chúng tôi nói chung. Điều duy nhất tôi không thích (và đây là vấn đề về WP, không phải ACF) là cách mọi phần dữ liệu kết thúc trong bảng postmeta, điều này có thể gây ra một số vấn đề nghiêm trọng khi bạn kết thúc với các trang web có hàng ngàn bài đăng và rất nhiều

  • Jeff Dreher nói.

    Đã xây dựng gần 200 trang web WordPress trong vài năm qua, tôi thấy ACF không thể thiếu. Khách hàng không phải là nhà phát triển web và SẼ làm hỏng trang web nếu được "trình tạo trang" miễn phí kiểm soát. ACF đã cho phép tôi viết các mẫu nội dung rất cụ thể để ngay cả khách hàng cũng có thể chỉnh sửa trang web của họ

  • Scotty D. nói.

    Đây chính là lý do tại sao KHÔNG nên sử dụng acf. Có, nó tạo ra một giao diện đẹp, nhưng nó cho phép mọi người sử dụng các lối tắt mà họ không nên sử dụng, lưu trữ dữ liệu theo những cách không lý tưởng và phá vỡ get_post_meta trên các bộ lặp. Một plugin khủng được những ai lười và muốn đi đường tắt sử dụng

    • Iain nói.

      Wow ý kiến ​​​​mạnh mẽ, Peter. Cách tiếp cận của bạn là gì?

      • Scotty D. nói.

        Tôi đã tạo biểu mẫu trực tiếp bằng php và html. Acf có một số vấn đề khá lớn trong việc lưu trữ và truy xuất dữ liệu

    • Jeff nói.

      Bạn có thể muốn kiểm tra CMB2. Bạn truy cập tất cả các trường bằng lệnh gọi get_post_meta tiêu chuẩn. Ngay cả các bộ lặp cũng được lưu trữ dưới dạng một mảng được tuần tự hóa trong một trường duy nhất, vì vậy get_post_meta vẫn hoạt động tốt

  • Jeff Gould nói.

    Chỉ cần một lời cảnh báo với cách tiếp cận

    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    14. Tôi nghĩ đó là một thủ thuật gọn gàng nhưng hãy đào sâu. Có vẻ như Chức năng ACF
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    15 kích hoạt lệnh gọi
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    16 không liên kết (trừ khi tôi đang xem xét điều gì đó hoàn toàn có thể xảy ra). Vì mã được viết chạy trên mỗi lần tải trang quản trị, cho tất cả người dùng (không bao gồm các lần truy cập cron và ajax). Vì vậy, nếu bạn đang điều hành một trang web có số lượng lớn
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    17 (thương mại điện tử, EDD, ghi nhật ký, bất cứ thứ gì), bạn sẽ có khả năng đạt được hiệu suất cao mặc dù cột
    add_action('acf/init', 'my_acf_init');
    function my_acf_init() {
            // check function exists
            if( function_exists('acf_register_block_type') ) {
                    // register a testimonial block
                    acf_register_block_type(array(
                            'name'          => 'testimonial',
                            'title'         => __('Testimonial'),
                            'description'       => __('A custom testimonial block.'),
                            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
                            'render_callback'   => 'my_acf_bock_render_callback',
                            'category'      => 'formatting',
                            'icon'          => 'admin-comments',
                            'keywords'      => array( 'testimonial', 'quote' ),
                    ));
            }
    }
    
    18 có chỉ mục. Query Monitor sẽ đưa ra cảnh báo truy vấn chậm. Ít nhất, phương pháp này phải có kiểm tra giới hạn ở trên cùng để giới hạn nó đối với quản trị viên trang hoặc tương tự. Nếu đó là trang web lớn, tôi sẽ tắt chức năng này sau khi quá trình phát triển hoàn tất và trang web được "bàn giao"

    • Iain nói.

      Xin chào Jared – Tôi thực sự đã chuyển sang đăng ký các nhóm trường thông qua PHP mà ACF tạo cho bạn, vì nó hiệu quả hơn nhiều so với phương thức cơ sở dữ liệu JSON =>. Tôi sẽ cập nhật bài viết trong thời gian ngắn

      • Jeff Gould nói.

        Gotcha. Theo kinh nghiệm của tôi, sử dụng đăng ký ACF PHP là lý tưởng cho tốc độ, nhưng thật không may, lợi ích chỉ dừng lại ở đó. Với các trang web lớn, nó trở thành một mớ hỗn độn. Mọi thay đổi có nghĩa là tạo lại và cập nhật tệp xuất JSON, tệp này cũng phải được giữ trong kiểm soát phiên bản. Tôi cho rằng có lẽ bạn có thể sử dụng lưu trường JSON song song với đăng ký PHP? . Ngoài ra, mã đăng ký ACF PHP phải được cập nhật. Tôi ước có một cách để tự động tạo và xử lý việc này. Không giống như Trường Carbon hoặc CMB2, mã đăng ký PHP người dùng ACF khá khó sử dụng. Bạn chắc chắn sẽ muốn quản lý hoặc chỉnh sửa các trường bằng cách trực tiếp thực hiện các thay đổi đối với trường đó. Một vấn đề lớn mà chúng tôi gặp phải đối với trang web khá lớn là chúng tôi đang sử dụng đăng ký ACF PHP cho mọi thứ (và có RẤT NHIỀU trường/thiết lập). Một số nơi dọc theo dòng xuất JSON ACF ban đầu đã bị mất và tại thời điểm đó, bạn bị lừa. Bởi vì bây giờ bạn đang bị mắc kẹt trong việc quản lý tất cả các trường chỉnh sửa PHP điên rồ của ACF. Không có cách nào để đảo ngược đăng ký PHP đó và nhập/tái tạo nó vào giao diện người dùng ACF (ít nhất là chúng tôi chưa bao giờ tìm ra cách). Vì vậy, chắc chắn là một lời cảnh báo ở đó 😀

        • Matt Edwards nói.

          Tôi đã viết PHP cần thiết để tạo các trường ACF theo cách thủ công. Khi bạn hiểu rõ về nó, nó khá nhanh và có một đoạn bổ sung cho VSCode giúp ích. Điều đó có nghĩa là bạn có thể đăng ký một khối, tạo kiểu cho nó và xác định tất cả các trường ở một nơi (điều này sẽ hữu ích nếu bạn muốn lấy nó và thả nó vào một dự án khác). Tôi biết bạn đã đề cập ở trên rằng nó khó sử dụng, nhưng nếu nó được chia thành các khối hoặc thành phần thì nó thực sự có thể quản lý được

      • Thomas Bensmann nói.

        Xin chào Iain, cảm ơn vì bài viết. Tôi đã sử dụng ACF trong một thời gian dài và đây là lần đầu tiên tôi nghe nói về việc PHP nhanh hơn nhiều so với giải pháp JSON. Tôi bắt đầu tạo một giải pháp giúp tạo mã php tự động và sử dụng giải pháp đó nếu môi trường được đặt thành sản xuất/trực tiếp. Tôi nghĩ rằng tôi sẽ thử nghiệm nó với một trang web mà tôi duy trì trước. Nó có hơn 300 nghìn bài đăng và hơn 30 nhóm lĩnh vực. Sau đó, tôi đã đánh giá thời gian tải của quản trị viên, nhưng tôi không tìm thấy cải tiến nhất quán nào với phiên bản PHP (trong đó các bộ lọc acf_json đã được nhận xét, thư mục chứa json đã được đổi tên và các nhóm trường đã bị xóa khỏi cơ sở dữ liệu) so với. phiên bản json hiện tại. Cũng không có bất kỳ bộ nhớ đệm đối tượng nào có bất kỳ tác động nào ở đây. Bạn có thể nói rõ hơn về cách bạn trải nghiệm hiệu suất được cải thiện và loại kết quả nào bạn thường nhận thấy không?

  • Jessica D nói.

    Có ai tìm ra cách cho phép InnerBlocks với giải pháp của ACF không?

  • cảnh sát trưởng nói.

    Tôi nhớ mình đã sử dụng 'trường ma thuật' trước khi tìm thấy ACF. Nếu không có ACF, tôi sẽ không bao giờ chọn sử dụng WordPress. Về Gutenberg, tôi vừa xóa nó. Johannes Gutenberg chắc chắn đang đội mồ. Có thể tôi chưa cho nó đủ cơ hội, nhưng tôi sẽ không bao giờ muốn khách hàng chỉ ‘chọn đồ’ – bởi vì đó không phải là công việc của họ – và đó không phải là lý do họ thuê chúng tôi. Có một lý do khiến nó có 2/5 sao trước khi nó ở trong lõi. Với nội dung linh hoạt của ACF, tôi có thể cung cấp cho họ tất cả các tùy chọn mà họ muốn – một cách có trách nhiệm. Nội dung ổn định/được xác định rõ ràng là điều khiến WP trở thành một khoản đầu tư so với SquareSpace – nơi bạn sẽ ghi nó xuống và bắt đầu lại hàng năm. Ngoài ra, bạn có thể xây dựng bảng quản trị với ACF và nội dung linh hoạt – sau đó chỉ cần sử dụng json-api ở nơi khác – và không bao giờ viết bất kỳ PHP nào. CMS miễn phí (và về cơ bản là vô hạn) – thật khó để từ chối

  • Ricardo Ríos nói.

    Có cách nào để điền ACF thả xuống bằng dữ liệu JSON bên ngoài không?

    • Iain nói.

      Kiểm tra https. //hỗ trợ. trường tùy chỉnh nâng cao. com/forums/topic/get-data-from-json-acf-plugin/

  • lorenhelgeson nói.

    Tôi đã sử dụng ACF Pro hơn sáu năm nay. Một điều tôi thực sự thích là nếu bạn có nhu cầu chuyển đổi khỏi nó, tất cả dữ liệu được lưu trữ nguyên bản dưới dạng các trường tùy chỉnh. Tôi vẫn chưa thấy cần phải rời xa nó, nhưng thực tế là nó không phụ thuộc vào mánh khóe hoặc loại bài đăng tùy chỉnh vô nghĩa sẽ bị hỏng khi được thay thế bằng một hệ thống khác… Chà, điều đó chỉ khiến nó trở thành người chiến thắng xung quanh. Lưu ý duy nhất là bạn phải cẩn thận khi di chuyển các trang web nếu các trường tùy chỉnh của bạn bao gồm dữ liệu hình ảnh. Tôi đã di chuyển hàng chục trang web và WordPress sẽ loại bỏ ngẫu nhiên các hình ảnh hoặc thay thế chúng bằng các hình ảnh khác nếu trước đó bạn đã tải lên các thành phần Thư viện phương tiện có cùng ID. Tất cả các loại dữ liệu khác mà tôi đã làm việc dịch hoàn hảo từ trang dàn dựng sang trang web trực tiếp

  • Fred S nói.

    Yêu ACF cho các khối tùy chỉnh. Không thích giao diện của chúng trong trình chỉnh sửa trực quan – đặc biệt là các bộ lặp. Đang loay hoay với enqueue_style để làm cho nó hiển thị với chế độ được đặt thành tự động. Tuy nhiên, vẫn chưa tìm được cách gọn gàng để tổ chức mã (e. g. biên dịch sass thành trình chỉnh sửa css trên mỗi khối)

  • Sarah Jayne Fell nói.

    Sử dụng ACF, tôi đã tạo nhóm trường "tên nghệ sĩ" bằng phân loại, sau đó chèn nhóm này vào trang sản phẩm của mình bằng Visual Composer. Tất cả đều ổn ngoại trừ nó hiển thị ID không phải tên. Sau đó, tôi nhận ra rằng mình cần chỉ định đối tượng chứ không phải ID – tuy nhiên ngay sau khi tôi làm điều này, trang sản phẩm của tôi không còn hiển thị hình ảnh hoặc mô tả sản phẩm nữa. Tôi đang sử dụng chủ đề Storefront miễn phí. Khi tôi chuyển từ phân loại sang trường văn bản, nó hoạt động, nhưng tôi cảm thấy có nhiều chức năng liên kết lâu dài hơn với một danh mục (của tên nghệ sĩ đó) hơn là văn bản. Có ai có vấn đề này?

  • Ray nói.

    Tôi rất thích xem bản cập nhật của bài viết này cho ACF 6. + world, nơi hiện tại dữ liệu khối được xác định trong. tập tin json. Chỉ có điều tôi vẫn còn thiếu về quá trình chuyển đổi

    ACF trong phát triển web là gì?

    Trường tùy chỉnh nâng cao là plugin WordPress giúp bạn chỉnh sửa nội dung phức tạp theo cách đơn giản và hợp lý. Nếu bạn đã quen thuộc với WordPress nhưng không có nhiều kinh nghiệm với ACF, bạn có thể tự hỏi tất cả những điều ồn ào đó là gì.

    ACF có miễn phí không?

    ACF có hai phiên bản. miễn phí và CHUYÊN NGHIỆP . Phiên bản miễn phí có đầy đủ tính năng và chứa hầu hết các loại trường bạn có thể cần khi xây dựng một trang web trung bình.

    ACF Gutenberg là gì?

    Trường tùy chỉnh nâng cao (ACF), một plugin WordPress, đã cho phép tạo nội dung mới một cách trực quan và khả năng chỉnh sửa nội dung phong phú. wordpress 5. 0 bao gồm trình chỉnh sửa nội dung gốc, Gutenberg, thay thế ACF để tạo khối nội dung, đặc biệt là cho đa phương tiện .