Темизация WP с Carbon Fields

Сама библиотека

Открыть

Или сразу как плагин для WP ::

Release Archive ( _blank )

Заготовка ( у меня в theme/inc/carbon_custom.php )

* например для простого лендинга

Открыть

        
< ? php

use Carbon_Fields\Container;
use Carbon_Fields\Field;

add_action('carbon_fields_register_fields', 'crb_attach_theme_options');
function crb_attach_theme_options()
{


    Container::make('theme_options', 'Theme Options', 'Главный экран')
        ->set_page_menu_title('Настройки сайта')
        //->set_page_parent('crb_carbon_fields_container_theme_options.php')
        /*
        * 1 Экран
        */
        ->add_fields(array(
            Field::make('text', 'sc1_title', __('Заголовок секции'))->set_width(100),
            Field::make('image', 'sc1_main_image', 'Изображение')->set_width(100)->set_value_type('url'),
            Field::make('text', 'sc1_subtitle_top', __('Подзаголовок (верхний)'))->set_width(50),
            Field::make('text', 'sc1_subtitle_bottom', __('Подзаголовок (нижний)'))->set_width(50),
            Field::make('text', 'sc1_title_bottom', __('Заголовок (нижний)'))->set_width(100),
            Field::make('image', 'sc1_award_image_1', 'Награды - 1')->set_width(25)->set_value_type('url'),
            Field::make('image', 'sc1_award_image_2', 'Награды - 2')->set_width(25)->set_value_type('url'),
            Field::make('image', 'sc1_award_image_3', 'Награды - 3')->set_width(25)->set_value_type('url'),
            Field::make('image', 'sc1_award_image_4', 'Награды - 4')->set_width(25)->set_value_type('url'),
            Field::make('complex', 'sc1_list', 'Преимущества')
                ->add_fields(array(
                    Field::make('text', 'sc1_list_title', __('Заголовок'))->set_width(100),
                    Field::make('image', 'sc1_list_svg', 'Изображение (svg)')->set_width(25)->set_value_type('url'),
                    Field::make('textarea', 'sc1_list_text', 'Текст')->set_width(75)
                ))
        ));







    /*
     *  Меню
     */
    Container::make('theme_options', 'Меню')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        /** Меню */
        ->add_fields(array(
            Field::make('complex', 'menu_list', 'Список элементов')
                ->add_fields(array(
                    Field::make('text', 'menu_list_title', __('Заголовок'))->set_width(50),
                    Field::make('text', 'menu_list_ancor', __('Якорь'))->set_width(50),
                ))
        ));


    /*
   * Шапка сайта
   */
    Container::make('theme_options', 'Header', 'Шапка сайта')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        /** Меню */
        ->add_fields(array(
            Field::make('text', 'header_time', __('Время акции'))->set_width(50),
            Field::make('text', 'header_phone', __('Телефон'))->set_width(50),
            Field::make('text', 'header_fb_link', __('Ссылка fb'))->set_width(50),
            Field::make('text', 'header_twitter_link', __('Ссылка twitter'))->set_width(50),
            Field::make('textarea', 'header_fb_svg', __('Изображение fb (svg)'))->set_width(50),
            Field::make('textarea', 'header_twitter_svg', __('Изображение twitter (svg)'))->set_width(50),

        ));

    /*
    * 2 Экран
    */
    Container::make('theme_options', __('Видео'))
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc2_title', __('Заголовок секции'))->set_width(100),
            Field::make('textarea', 'sc2_desc', __('Описание'))->set_width(100),
            Field::make('text', 'sc2_link_yt_1', __('Ссылка Youtube #1'))->set_width(100),
            Field::make('text', 'sc2_link_yt_2', __('Ссылка Youtube #2'))->set_width(100),
            Field::make('text', 'sc2_link_yt_3', __('Ссылка Youtube #3'))->set_width(100),
        ));


    /*
     * 3 Преимущества
     */
    Container::make('theme_options', 'advantages', 'Преимущества')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc3_title', __('Заголовок секции'))->set_width(100),
            Field::make('complex', 'sc3_list', 'Преимущества')
                ->add_fields(array(
                    Field::make('text', 'sc1_list_title', __('Заголовок'))->set_width(100), Field::make('textarea', 'sc1_list_svg', 'Изображение (svg)')->set_width(25),
                    Field::make('textarea', 'sc3_list_text', 'Текст')->set_width(100)
                ))
        ));


    /*
         * 4 Доверие клиентов
         */
    Container::make('theme_options', 'clients', 'Доверие клиентов')
        ->set_page_menu_title('Доверие клиентов')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc4_title', __('Заголовок секции'))->set_width(50),
            Field::make('text', 'sc4_subtitle', __('Подзаголовок секции'))->set_width(50),
            Field::make('text', 'sc4_title_bad', __('Заголовок Отрицательных'))->set_width(50),
            Field::make('text', 'sc4_title_good', __('Заголовок Положительных'))->set_width(50),
            Field::make('complex', 'sc4_list', 'Список')
                ->add_fields(array(
                    Field::make('text', 'sc4_list_bad', __('Отрицательный'))->set_width(50),
                    Field::make('text', 'sc4_list_good', 'Положительный')->set_width(50)
                ))
        ));

    /*
     * 5 Портфолио
     */
    Container::make('theme_options', 'portfolio', 'Портфолио')
        ->set_page_menu_title('Портфолио')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc5_title', __('Заголовок секции'))->set_width(100),
            Field::make('complex', 'sc5_list', 'Список работ')
                ->add_fields(array(
                    Field::make('image', 'sc5_list_before', __('Изображение До'))->set_width(50),
                    Field::make('image', 'sc5_list_after', 'Изображение После')->set_width(50)
                ))
        ));




    /*
     * 7 Products
     */
    Container::make('theme_options', 'products', 'Товары')
        ->set_page_menu_title('Товары')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc7_title', __('Заголовок секции'))->set_width(50),
            Field::make('text', 'sc7_subtitle', __('Подзаголовок секции'))->set_width(50),
            Field::make('complex', 'sc7_list', 'Список товаров')
                ->add_fields(array(
                    Field::make('text', 'sc7_list_title', __('Заголовок'))->set_width(100),
                    Field::make('image', 'sc7_list_image', 'Изображение')->set_width(100)->set_value_type('url'),
                    Field::make('text', 'sc7_list_price', __('Цена'))->set_width(50),
                    Field::make('text', 'sc7_list_percent', __('Скидка (%)'))->set_width(50),
                ))
        ));

        /*
         * 8 СТА
         */
    Container::make('theme_options', 'cta', 'CTA')
        ->set_page_menu_title('CTA')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc8_title', __('Заголовок секции'))->set_width(100),
            Field::make('text', 'sc8_subtitle', __('Подзаголовок секции'))->set_width(100),
            Field::make('text', 'sc8_btntext', __('Текст кнопки'))->set_width(100),

        ));


        /*
         * 9 Сертификаты
         */
    Container::make('theme_options', 'certificates', 'Сертификаты')
        ->set_page_menu_title('Сертификаты')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc9_title', __('Заголовок секции')),
            Field::make('media_gallery', 'sc9_media_gallery', __('Галерея сертификатов'))
        ));


        /*
         * Экран 10
         */
//    Container::make('theme_options', 'screen10', 'Экран 10 (как 2й)')
//        ->set_page_menu_title('Экран 10')
//        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
//        ->add_fields(array(
//            Field::make('text', 'sc10_title', __('Заголовок секции'))->set_width(100),
//            Field::make('textarea', 'sc10_desc', __('Описание'))->set_width(100),
//            Field::make('text', 'sc10_link_yt_1', __('Ссылка Youtube #1'))->set_width(100),
//            Field::make('text', 'sc10_link_yt_2', __('Ссылка Youtube #2'))->set_width(100),
//            Field::make('text', 'sc10_link_yt_3', __('Ссылка Youtube #3'))->set_width(100),
//        ));
 
        /*
         * Экран 11
         */
    Container::make('theme_options', 'screen11', 'Возврат')
        ->set_page_menu_title('Возврат')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc11_title_1', __('Заголовок 1'))->set_width(100),
            Field::make('text', 'sc11_title_2', __('Заголовок 2'))->set_width(100),
            Field::make('text', 'sc11_title_3', __('Заголовок 3'))->set_width(100),
            ));


    /*
     * 6 Отзывы
     */
    Container::make('theme_options', 'reviews', 'Отзывы')
        ->set_page_menu_title('Отзывы')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'sc6_title', __('Заголовок секции'))->set_width(50),
            Field::make('text', 'sc6_subtitle', __('Подзаголовок секции'))->set_width(50),
            Field::make('complex', 'sc6_list', 'Список Отзывов')
                ->add_fields(array(
                    Field::make('text', 'sc6_list_link', __('Ссылка'))->set_width(100),
                    Field::make('text', 'sc6_list_title', __('Заголовок'))->set_width(50),
                    Field::make('text', 'sc6_list_subtitle', __('Подзаголовок'))->set_width(50),
                    Field::make('image', 'sc6_list_image', __('Изображение (175х175 px)'))->set_width(50)->set_value_type('url'),
                ))
        ));



    /*
     * 6 FAQ
     */
    Container::make('theme_options', 'faq', 'FAQ')
        ->set_page_menu_title('FAQ')
        ->set_page_parent('crb_carbon_fields_container_theme_options.php')
        ->add_fields(array(
            Field::make('text', 'faq_title', __('Заголовок секции'))->set_width(100),

            Field::make('complex', 'faq_list', 'Список Вопрос-ответ')
                ->add_fields(array(

                    Field::make('text', 'faq_q', __('Вопрос'))->set_width(100),
                    Field::make('textarea', 'faq_a', __('Ответ'))->set_width(100),

                ))
        ));


}





        
    

И вывод в шаблоне:

Открыть

        
// одиночное поле

echo carbon_get_theme_option('sc1_title_bottom');


// множественное

 $slides = carbon_get_theme_option('sliders');
 foreach ($slides as $slide): 

        < ? echo $slide['list_svg']; ? > 
        < ?  echo $slide['list_title']; ? >
        < ?  echo $slide['list_text']; ? >
                  

endforeach;


        
    

Использование с WPML

* в админке поля карбона меняются в разделах только при переключении языка

Открыть

        
// functions.php


/*
 * Suffix for WPML + carbon fields
 * https://carbonfields.net/docs/advanced-topics-wpml-support/
 */
function crb_get_i18n_suffix()
{
    $suffix = '';
    if (!defined('ICL_LANGUAGE_CODE')) {
        return $suffix;
    }
    $suffix = '_' . ICL_LANGUAGE_CODE;
    return $suffix;
}

function crb_get_i18n_theme_option($option_name)
{
    $suffix = crb_get_i18n_suffix();
    return carbon_get_theme_option($option_name . $suffix);
}

//function crb_get_i18n_fields( $field_name ) {
//    $suffix = crb_get_i18n_suffix();
//    return  $field_name ;
//}




// carbon_custom.php

 Container::make('theme_options', __('О Нас'))
        ->add_fields(array(
            Field::make( 'text', 'about_title'. crb_get_i18n_suffix(), __('Заголовок') )->set_width(100),
            Field::make('rich_text', 'about_text'. crb_get_i18n_suffix(), __('Описание'))->set_width(100),
        ));
        
        
        
        
// использование в шаблоне 

// - одиночное 

echo crb_get_i18n_theme_option('contacts_time'); 
 
// множественное

 $main_slider = carbon_get_theme_option('main_slider');
 
 foreach ($main_slider as $item): $i++; ?>

        echo $i;  
       echo $item['main_slider_title' . crb_get_i18n_suffix()];  

         if (isset($item['main_slider_link' . crb_get_i18n_suffix()]) && $item['main_slider_link' . crb_get_i18n_suffix()] !== '') {
            echo $item['main_slider_link' . crb_get_i18n_suffix()] ;
          }  
          echo $item['main_slider_text' . crb_get_i18n_suffix()];  
          echo $item['main_slider_img']; 
     endforeach;
     
     
/// !! если поле задано например так::

Field::make('complex', 'main_slider', 'Слайдер на главной странице')
                ->add_fields(array(
                    Field::make('text', 'main_slider_title'. crb_get_i18n_suffix(), __('Заголовок'))->set_width(100)->set_default_value(''),
                    Field::make('text', 'main_slider_link'. crb_get_i18n_suffix(), __('Ссылка'))->set_width(100),
                    Field::make('rich_text', 'main_slider_text'. crb_get_i18n_suffix(), __('Описание'))->set_width(100),
                    Field::make('image', 'main_slider_img', 'Изображение')->set_width(50)->set_value_type('url'),

            )),
            
            
            
// принцип использования примерно одинаковый::

carbon_get_post_meta(get_the_ID(), 'field_name' . crb_get_i18n_suffix()) // в цикле для записи
        
    
Тэги:

Комментарии (0)


Оставить комментарий

Success/Error Message Goes Here

TOP