За последние 24 часа нас посетили 8798 программистов и 835 роботов. Сейчас ищут 402 программиста ...

Wordpress carbon fields

Тема в разделе "Wordpress", создана пользователем Hovik, 18 окт 2020.

  1. Hovik

    Hovik Активный пользователь

    С нами с:
    22 окт 2018
    Сообщения:
    89
    Симпатии:
    0
    Добры день всем,
    у меня сайт на Wordpress я использую carbon fields версию 3.1.20 в виде плагина, все поля работают нормально кроме select оно правильно показывает в админке но не сохраняет в базе, подскажете пожалуйста правильны подход. вот мой класс
    PHP:
    1. /**
    2. * The file that defines the core plugin class
    3. *
    4. * A class definition that includes attributes and functions used across both the
    5. * public-facing side of the site and the admin area.
    6. *
    7. * @link       http://facebook.com
    8. * @since      1.0.0
    9. *
    10. * @package    Strides_Category_Slider
    11. * @subpackage Strides_Category_Slider/includes
    12. */
    13.  
    14. use Carbon_Fields\Container;
    15. use Carbon_Fields\Field;
    16.  
    17.  
    18. class Strides_Category_Slider
    19. {
    20.  
    21.     /**
    22.      * The loader that's responsible for maintaining and registering all hooks that power
    23.      * the plugin.
    24.      */
    25.     protected $loader;
    26.  
    27.     /**
    28.      * The unique identifier of this plugin.
    29.      */
    30.     protected $plugin_name;
    31.  
    32.     /**
    33.      * @var      string $version The current version of the plugin.
    34.      */
    35.     protected $version;
    36.  
    37.  
    38.     public $slide_products = [];
    39.  
    40.  
    41.     public function __construct()
    42.     {
    43.         if (defined('STRIDES_CATEGORY_SLIDER_VERSION')) {
    44.             $this->version = STRIDES_CATEGORY_SLIDER_VERSION;
    45.         } else {
    46.             $this->version = '1.0.0';
    47.         }
    48.         $this->plugin_name = 'strides-category-slider';
    49.  
    50.         $this->load_dependencies();
    51.         $this->set_locale();
    52.         $this->define_admin_hooks();
    53.         $this->define_public_hooks();
    54.  
    55.         add_action('carbon_fields_register_fields', array($this, 'strides_get_products_for_tab'));
    56.        
    57.         add_action('carbon_fields_register_fields', array($this, 'strides_get_products'));
    58.     }
    59.  
    60.  
    61.  
    62.  
    63. // Создаем контейнер для полях
    64.     public function strides_get_products()
    65.     {
    66.  
    67.         Container::make('term_meta', 'Slider Category Properties')
    68.             ->show_on_taxonomy('product_cat')
    69.             ->add_fields(array(
    70.                 Field::make('text','strides_category_title','Title for Category'),
    71.                 Field::make('image','strides_category_background','Background for Category')
    72.                 ->set_value_type('url'),
    73.                 Field::make('image','strides_category_icon','Icon for Category')
    74.                 ->set_value_type('url'),
    75.                 Field::make('select', 'strides_category_prodct_id', 'Product For Slider 1')
    76.                     ->add_options(array($this, 'strides_get_products_for_tab')),
    77.                     // ->add_options( array(1=> 'one', 2=> 'two', 3=> 'four') ), //этот массив сохраняется
    78.             ));
    79.     }
    80.  
    81.  
    82.  
    83.  
    84.  
    85.  
    86.  
    87.  
    88.  
    89.  
    90. // получаем все продукты данного категории по ид категории
    91.     public function strides_get_products_for_tab()
    92.     {
    93.         $args = array(
    94.             'post_type' => 'product',
    95.             'numberposts' => 300,
    96.             'tax_query' => array(
    97.                 'relation' => 'OR',
    98.                 array(
    99.                     'taxonomy' => 'product_cat',
    100.                     'field' => 'id',
    101.                     'terms' => $_GET['tag_ID'],
    102.                 ),
    103.             ),
    104.         );
    105.         $products = get_posts($args);
    106.         $prod[0] = 'Do not choose';
    107.         if (!empty($products)) {
    108.             foreach ($products as $product) {
    109.                 $prod[$product->ID] = $product->post_title;
    110.             }
    111.         }
    112.         $this->slide_products = $prod;
    113.        
    114.         return $prod;
    115.     }
    116.  
    117.  
    118.     public function get_slide_products(){
    119.         return $this->slide_products;
    120.     }
    121.    
    122.  
    123.  
    124.  
    125.     /**
    126.      * Load the required dependencies for this plugin.
    127.      *
    128.      * Include the following files that make up the plugin:
    129.      *
    130.      * - Strides_Category_Slider_Loader. Orchestrates the hooks of the plugin.
    131.      * - Strides_Category_Slider_i18n. Defines internationalization functionality.
    132.      * - Strides_Category_Slider_Admin. Defines all hooks for the admin area.
    133.      * - Strides_Category_Slider_Public. Defines all hooks for the public side of the site.
    134.      *
    135.      * Create an instance of the loader which will be used to register the hooks
    136.      * with WordPress.
    137.      *
    138.      * @since    1.0.0
    139.      * @access   private
    140.      */
    141.     private function load_dependencies()
    142.     {
    143.  
    144.         /**
    145.          * The class responsible for orchestrating the actions and filters of the
    146.          * core plugin.
    147.          */
    148.         require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-strides-category-slider-loader.php';
    149.  
    150.         /**
    151.          * The class responsible for defining internationalization functionality
    152.          * of the plugin.
    153.          */
    154.         require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-strides-category-slider-i18n.php';
    155.  
    156.         /**
    157.          * The class responsible for defining all actions that occur in the admin area.
    158.          */
    159.         require_once plugin_dir_path(dirname(__FILE__)) . 'admin/class-strides-category-slider-admin.php';
    160.  
    161.         /**
    162.          * The class responsible for defining all actions that occur in the public-facing
    163.          * side of the site.
    164.          */
    165.         require_once plugin_dir_path(dirname(__FILE__)) . 'public/class-strides-category-slider-public.php';
    166.  
    167.         $this->loader = new Strides_Category_Slider_Loader();
    168.  
    169.     }
    170.  
    171.     /**
    172.      * Define the locale for this plugin for internationalization.
    173.      *
    174.      * Uses the Strides_Category_Slider_i18n class in order to set the domain and to register the hook
    175.      * with WordPress.
    176.      *
    177.      * @since    1.0.0
    178.      * @access   private
    179.      */
    180.     private function set_locale()
    181.     {
    182.  
    183.         $plugin_i18n = new Strides_Category_Slider_i18n();
    184.  
    185.         $this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain');
    186.  
    187.     }
    188.  
    189.     /**
    190.      * Register all of the hooks related to the admin area functionality
    191.      * of the plugin.
    192.      *
    193.      * @since    1.0.0
    194.      * @access   private
    195.      */
    196.     private function define_admin_hooks()
    197.     {
    198.  
    199.         $plugin_admin = new Strides_Category_Slider_Admin($this->get_plugin_name(), $this->get_version());
    200.         $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles');
    201.         $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts');
    202.  
    203.     }
    204.  
    205.     /**
    206.      * Register all of the hooks related to the public-facing functionality
    207.      * of the plugin.
    208.      *
    209.      * @since    1.0.0
    210.      * @access   private
    211.      */
    212.     private function define_public_hooks()
    213.     {
    214.  
    215.         $plugin_public = new Strides_Category_Slider_Public($this->get_plugin_name(), $this->get_version());
    216.  
    217.         $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles');
    218.         $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts');
    219.  
    220.     }
    221.  
    222.     /**
    223.      * Run the loader to execute all of the hooks with WordPress.
    224.      *
    225.      * @since    1.0.0
    226.      */
    227.     public function run()
    228.     {
    229.         $this->loader->run();
    230.     }
    231.  
    232.     /**
    233.      * The name of the plugin used to uniquely identify it within the context of
    234.      * WordPress and to define internationalization functionality.
    235.      *
    236.      * @since     1.0.0
    237.      * @return    string    The name of the plugin.
    238.      */
    239.     public function get_plugin_name()
    240.     {
    241.         return $this->plugin_name;
    242.     }
    243.  
    244.     /**
    245.      * The reference to the class that orchestrates the hooks with the plugin.
    246.      *
    247.      * @since     1.0.0
    248.      * @return    Strides_Category_Slider_Loader    Orchestrates the hooks of the plugin.
    249.      */
    250.     public function get_loader()
    251.     {
    252.         return $this->loader;
    253.     }
    254.  
    255.     /**
    256.      * Retrieve the version number of the plugin.
    257.      *
    258.      * @since     1.0.0
    259.      * @return    string    The version number of the plugin.
    260.      */
    261.     public function get_version()
    262.     {
    263.         return $this->version;
    264.     }
    265.  
    266. }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.236
    Симпатии:
    1.716
    Адрес:
    Молдова, г.Кишинёв
    сложно сказать, надо делать отладку, почти универсальный способ найти ошибку