Including ACF in functions.php (WordPress)
Solution 1
You need to make sure your includes won't collide with ACF itself or someone else's plugin that also uses it.
if( !class_exists('Acf') )
include_once('external/acf/acf.php' );
if( !class_exists('acf_repeater_plugin') )
include_once('external/acf-repeater/acf-repeater.php');
if( !class_exists('acf_options_page_plugin') )
include_once('external/acf-options-page/acf-options-page.php');
Solution 2
There are only Four steps to include ACF in functions.php
/***********************************************************
* Integrate ACF in theme
***********************************************************/
// 1. customize ACF path
add_filter('acf/settings/path', 'my_acf_settings_path');
function my_acf_settings_path( $path ) {
// update path
$path = get_stylesheet_directory() . '/framework/acf/';
// return
return $path;
}
// 2. customize ACF dir
add_filter('acf/settings/dir', 'my_acf_settings_dir');
function my_acf_settings_dir( $dir ) {
// update path
$dir = get_stylesheet_directory_uri() . '/framework/acf/';
// return
return $dir;
}
// 3. Hide ACF field group menu item
add_filter('acf/settings/show_admin', '__return_false');
// 4. Include ACF
include_once( get_stylesheet_directory() . '/framework/acf/acf.php' );
// including acf fields
require_once( get_template_directory() . '/framework/acf-fields.php' );
Comments
-
lukeseager almost 2 years
I'm making a theme to sell on theme forrest for the first time. I've used ACF as a standard plugin during development to make sure everything's working.
I've almost finished so decided to export my
ACF
toPHP
and include it into myfunctions.php
file.I copy/pasted the code it gave me into
functions.php
and includedACF
,options-page
, andrepeater-field
into a folder within my theme and referenced them accordingly.However, when I visit my site I get this error:
Fatal error: Cannot redeclare class Acf in /Applications/MAMP/htdocs/omg/wp-content/themes/omg-v1/external/acf/acf.php on line 46
I've removed the actual plugin files from the plugins folder also.
Any ideas why it might be bugging out?
I know it's a lot of code, but incase anyone wants to look this is the code that's in my
functions.php
(which ACF gave me)include_once('external/acf/acf.php' ); define( 'ACF_LITE' , true ); // Add-ons include_once('external/acf-repeater/acf-repeater.php'); include_once('external/acf-options-page/acf-options-page.php'); if(function_exists("register_field_group")) { register_field_group(array ( 'id' => 'acf_featured-story', 'title' => 'Featured Story', 'fields' => array ( array ( 'key' => 'field_5256bd0fc7592', 'label' => 'Is this story featured?', 'name' => 'featured-story', 'type' => 'true_false', 'message' => 'Yes', 'default_value' => 0, ), ), 'location' => array ( array ( array ( 'param' => 'post_type', 'operator' => '==', 'value' => 'post', 'order_no' => 0, 'group_no' => 0, ), ), ), 'options' => array ( 'position' => 'side', 'layout' => 'default', 'hide_on_screen' => array ( ), ), 'menu_order' => 0, )); register_field_group(array ( 'id' => 'acf_options', 'title' => 'Options', 'fields' => array ( array ( 'key' => 'field_525d1b6d49043', 'label' => 'Homepage Layout (Left Column)', 'name' => 'homepage-layout-left', 'type' => 'repeater', 'instructions' => 'Select which categories you want to display on the homepage.', 'sub_fields' => array ( array ( 'key' => 'field_525d1b8a49044', 'label' => 'Category', 'name' => 'category', 'type' => 'taxonomy', 'column_width' => '', 'taxonomy' => 'category', 'field_type' => 'select', 'allow_null' => 0, 'load_save_terms' => 0, 'return_format' => 'id', 'multiple' => 0, ), array ( 'key' => 'field_525d2473de72c', 'label' => 'Number of Posts', 'name' => 'number-of-posts', 'type' => 'number', 'column_width' => '', 'default_value' => 4, 'placeholder' => '', 'prepend' => '', 'append' => '', 'min' => 2, 'max' => '', 'step' => 2, ), ), 'row_min' => 1, 'row_limit' => 4, 'layout' => 'row', 'button_label' => 'Add a category', ), array ( 'key' => 'field_525d25ee91b41', 'label' => 'Homepage Layout (Sidebar)', 'name' => 'homepage-layout-sidebar', 'type' => 'repeater', 'instructions' => 'Select which categories you want to display in the sidebar.', 'sub_fields' => array ( array ( 'key' => 'field_525d25ee91b42', 'label' => 'Category', 'name' => 'category', 'type' => 'taxonomy', 'column_width' => '', 'taxonomy' => 'category', 'field_type' => 'select', 'allow_null' => 0, 'load_save_terms' => 0, 'return_format' => 'id', 'multiple' => 0, ), array ( 'key' => 'field_525d25ee91b43', 'label' => 'Number of Posts', 'name' => 'number-of-posts', 'type' => 'number', 'column_width' => '', 'default_value' => 4, 'placeholder' => '', 'prepend' => '', 'append' => '', 'min' => 2, 'max' => '', 'step' => 2, ), ), 'row_min' => 1, 'row_limit' => 4, 'layout' => 'row', 'button_label' => 'Add a category', ), array ( 'key' => 'field_525d2afdf101b', 'label' => 'Newsletter (optional)', 'name' => 'newsletter', 'type' => 'repeater', 'sub_fields' => array ( array ( 'key' => 'field_525d2b6612426', 'label' => 'Link', 'name' => 'link', 'type' => 'text', 'instructions' => 'If you have a newsletter, copy/paste your link in here.', 'column_width' => '', 'default_value' => '', 'placeholder' => '', 'prepend' => '', 'append' => '', 'formatting' => 'none', 'maxlength' => '', ), array ( 'key' => 'field_525d2bb40e332', 'label' => 'Text', 'name' => 'text', 'type' => 'textarea', 'instructions' => 'Enter your call to action for the newsletter here.', 'column_width' => '', 'default_value' => 'Subscribe! To the OMG! newsletter!', 'placeholder' => '', 'maxlength' => 100, 'formatting' => 'br', ), ), 'row_min' => 0, 'row_limit' => 1, 'layout' => 'row', 'button_label' => 'Add Newsletter Link', ), array ( 'key' => 'field_525e8b77edf6e', 'label' => 'Advert', 'name' => 'adverts', 'type' => 'repeater', 'instructions' => 'Do you wish to display an advert in your sidebar?', 'sub_fields' => array ( array ( 'key' => 'field_525e8c1e3600f', 'label' => 'Advert Image', 'name' => 'advert-img', 'type' => 'image', 'instructions' => 'Upload a 300 x 200px image for best quality / load time', 'column_width' => '', 'save_format' => 'url', 'preview_size' => 'full', 'library' => 'all', ), array ( 'key' => 'field_525e8d1699619', 'label' => 'Link', 'name' => 'ad-link', 'type' => 'text', 'column_width' => '', 'default_value' => '', 'placeholder' => '', 'prepend' => '', 'append' => '', 'formatting' => 'none', 'maxlength' => '', ), ), 'row_min' => 0, 'row_limit' => 1, 'layout' => 'table', 'button_label' => 'Add an Advert', ), ), 'location' => array ( array ( array ( 'param' => 'options_page', 'operator' => '==', 'value' => 'acf-options', 'order_no' => 0, 'group_no' => 0, ), ), ), 'options' => array ( 'position' => 'normal', 'layout' => 'no_box', 'hide_on_screen' => array ( ), ), 'menu_order' => 0, )); }