# ultimate-post/2.6.2/classes/options/Addons.php

Post Grid Gutenberg Blocks – PostX, version 2.6.2. 340 lines.

- Page: https://pluginprobe.com/plugins/ultimate-post/2.6.2/code/classes/options/Addons.php
- Raw: https://pluginprobe.com/plugins/ultimate-post/2.6.2/raw/classes/options/Addons.php
- Modified: 2022-06-28T07:44:06+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ultimate-post/2.6.2/code/classes/options/Addons.php#L10-L20`.

```php
<?php
namespace ULTP;

defined('ABSPATH') || exit;

class Option_Addons{
    public function __construct() {
        $this->create_admin_page();
        add_filter('ultp_settings', array($this, 'get_addon_settings'), 10, 1);
    }


    public static function get_addon_settings($config) {
        $arr = array(
            'addon' => array(
                'label' => __('Blocks', 'ultimate-post'),
                'attr' => array(
                    'addon_enable' => array(
                        'type'  => 'heading',
                        'label' => __('Enable/Disable Blocks', 'ultimate-post'),
                    ),
                    'post_grid_1' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #1 Block.', 'ultimate-post')
                    ),
                    'post_grid_2' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #2 Block.', 'ultimate-post')
                    ),
                    'post_grid_3' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #3 Block.', 'ultimate-post')
                    ),
                    'post_grid_4' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #4 Block.', 'ultimate-post')
                    ),
                    'post_grid_5' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #5 Block.', 'ultimate-post')
                    ),
                    'post_grid_6' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #6 Block.', 'ultimate-post')
                    ),
                    'post_grid_7' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Grid #7 Block.', 'ultimate-post')
                    ),
                    'post_list_1' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post List #1 Block.', 'ultimate-post')
                    ),
                    'post_list_2' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post List #2 Block.', 'ultimate-post')
                    ),
                    'post_list_3' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post List #3 Block.', 'ultimate-post')
                    ),
                    'post_list_4' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post List #4 Block.', 'ultimate-post')
                    ),
                    'post_module_1' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Module #1 Block.', 'ultimate-post')
                    ),
                    'post_module_2' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Module #2 Block.', 'ultimate-post')
                    ),
                    'post_slider_1' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Post Slider #1 Block.', 'ultimate-post')
                    ),
                    'heading' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Heading Block.', 'ultimate-post')
                    ),
                    'image' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Image Block.', 'ultimate-post')
                    ),
                    'taxonomy' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Taxonomy Block.', 'ultimate-post')
                    ),
                    'wrapper' => array(
                        'type' => 'switch',
                        'label' => __('Enable / Disable', 'ultimate-post'),
                        'default' => true,
                        'desc' => __('Wrapper Block.', 'ultimate-post')
                    )
                )
            )
        );
        return array_merge($config, $arr);
    }
  

    public static function all_addons(){
        $all_addons = array(
            'ultp_category' => array(
                'name' => __( 'Category', 'ultimate-post' ),
                'desc' => __( 'Choose your desired color and Image for categories or any taxonomy.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/category-style.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/',
                'live' => 'https://www.wpxpo.com/postx/addons/category/'
            ),
            'ultp_builder' => array(
                'name' => __( 'Builder', 'ultimate-post' ),
                'desc' => __( 'Design template for Archive, Category, Custom Taxonomy, Date, and Search Page.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/builder-icon.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/archive-builder/',
                'live' => 'https://www.wpxpo.com/postx/addons/builder/'
            ),
            'ultp_progressbar' => array(
                'name' => __( 'Progressbar', 'ultimate-post' ),
                'desc' => __( 'Let the users see a graphical indicator to know the reading progress of a blog post.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/progressbar.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/progress-bar/',
                'live' => 'https://www.wpxpo.com/postx/progress-bar/'
            ),
            'ultp_yoast' => array(
                'name' => __( 'Yoast Meta', 'ultimate-post' ),
                'desc' => __( 'Show Yoast meta description in the excerpt.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/yoast.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/seo-meta/',
                'live' => 'https://www.wpxpo.com/postx/addons/yoast/',
                'required' => array(
                    'name' => 'Yoast',
                    'slug' => 'wordpress-seo/wp-seo.php'
                )
                ),
            'ultp_aioseo' => array(
                'name' => __( 'All in One SEO Meta', 'ultimate-post' ),
                'desc' => __( 'Show All in One SEO meta description in the excerpt.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/aioseo.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/seo-meta/',
                'live' => 'https://www.wpxpo.com/postx/addons/all-in-one-seo-meta/',  
                'required' => array(
                    'name' => 'All in One SEO',
                    'slug' => 'all-in-one-seo-pack/all_in_one_seo_pack.php'
                )
                ),
            'ultp_rankmath' => array(
                'name' => __( 'RankMath Meta', 'ultimate-post' ),
                'desc' => __( 'Show RankMath meta description in the excerpt.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/rankmath.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/seo-meta/', 
                'live' => 'https://www.wpxpo.com/postx/addons/rankmath/',
                'required' => array(
                    'name' => 'RankMath',
                    'slug' => 'seo-by-rank-math/rank-math.php'
                )
                ),
            'ultp_seopress' => array(
                'name' => __( 'SEOPress Meta', 'ultimate-post' ),
                'desc' => __( 'Show SEOPress meta description in the excerpt.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/seopress.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/seo-meta/', 
                'live' => 'https://www.wpxpo.com/postx/addons/seopress/',
                'required' => array(
                    'name' => 'SEOPress',
                    'slug' => 'wp-seopress/seopress.php'
                )
                ),
            'ultp_squirrly' => array(
                'name' => __( 'Squirrly Meta', 'ultimate-post' ),
                'desc' => __( 'Show Squirrly meta description in the excerpt.', 'ultimate-post' ),
                'img' => ULTP_URL.'/assets/img/addons/squirrly.svg',
                'is_pro' => true,
                'docs' => 'https://docs.wpxpo.com/docs/postx/add-on/seo-meta/',
                'live' => 'https://www.wpxpo.com/postx/addons/squirrly/',
                'required' => array(
                    'name' => 'Squirrly',
                    'slug' => 'squirrly-seo/squirrly.php'
                ),
            ),
            );
        return  apply_filters('ultp_addons_config', $all_addons);
    }


    /**
     * Settings page output
     */
    public function create_admin_page() { ?>

        <div class="ultp-dashboard-container">
            
             <!-- addons content -->
                <div class="ultp-dashboard-body ultp-addons-content is-blank">
                    
                    <!-- Pro Popup Container -->
                    <div class="ultp-popup-container popup-center">
                        <div class="ultp-unlock-popup ultp-unlock-modal">
                            <img src="<?php echo esc_url(ULTP_URL . '/assets/img/admin/dashboard/unlock-super-icon.svg'); ?>" alt="lock icon">
                            <div class="ultp-popup-heading"><?php esc_html_e('Unlock 11+ Addons', 'ultimate-post'); ?></div>
                            <div class="ultp-popup-desc">
                                <?php esc_html_e('We’re sorry, PostX Addons are not available on PostX  free. Please upgrade to a PRO plan to unlock the add  ons of your choice.', 'ultimate-post'); ?>
                            </div>
                            <a href="<?php echo esc_url(ultimate_post()->get_premium_link('', 'postx_dashboard_addons_popup')); ?>" class="ultp-popup-planbtn"><?php esc_html_e('Upgrade Plan', 'ultimate-post'); ?></a>
                            <button class="ultp-popup-close"></button>
                        </div>
                    </div>

                    <div class="ultp-addon-heading">
                        <?php _e('All Addons', 'ultimate-post'); ?>
                    </div>
                    
                    <div class="ultp-addons-grid">
                        <?php
                            $settings = apply_filters('ultp_settings', []);
                            $option_value = ultimate_post()->get_setting();
                            $addons_data = self::all_addons();
                            foreach ($addons_data as $key => $val) {
                                $require_plugin = '';
                                if (isset($val['required'])) {
                                    $active_plugins = get_option( 'active_plugins', array() );
                                    if (is_multisite()) {
                                        $active_plugins = array_merge($active_plugins, array_keys(get_site_option( 'active_sitewide_plugins', array() )));
                                    }
                                    if ( !in_array($val['required']['slug'], apply_filters('active_plugins', $active_plugins)) ) {
                                        $require_plugin = $val['required']['name'];
                                    }
                                }
                                ?>
                                <div class="ultp-content-addon">
                                    <div class="ultp-content-addon-container">
                                        <div class="ultp-content-meta">
                                            <img src="<?php echo esc_url($val['img']); ?>" alt="<?php echo esc_attr($val['name']); ?>">
                                        </div>
                                        <div class="ultp-addons-option-wrapper">
                                            <div class="ultp-addons-option-control">
                                                <span class="ultp-mid-title"><?php echo esc_html($val['name']); ?></span>
                                                <div class="ultp-control-option">
                                                    <?php 
                                                    if (isset($val['docs'])) { ?>
                                                        <a href="<?php echo esc_url($val['docs']); ?>" class="ultp-option-tooltip" target="_blank">
                                                            <span><?php esc_html_e('Documentation', 'ultimate-post'); ?></span>
                                                            <div class="dashicons dashicons-book"></div>
                                                        </a>
                                                    <?php } ?>
                                                    
                                                    <?php
                                                    if (isset($val['live'])) { ?>
                                                        <a href="<?php echo esc_url($val['live']); ?>" class="ultp-option-tooltip" target="_blank">
                                                            <span><?php esc_html_e('Live View', 'ultimate-post'); ?></span>
                                                            <div class="dashicons dashicons-visibility"></div>
                                                        </a>
                                                    <?php } ?>

                                                    <input type="checkbox" data-type="<?php echo esc_attr($key); ?>" class="ultp-addons-enable <?php echo (($val['is_pro'] && (!defined('ULTP_PRO_VER'))) ? 'disabled' : ''); ?>" id="<?php echo esc_attr($key); ?>" <?php echo ( isset($option_value[$key]) && $option_value[$key] == 'true' ? 'checked' : '' ); ?>/>
                                                    <label for="<?php echo esc_attr($key); ?>">
                                                        <?php if ($val['is_pro'] && (!defined('ULTP_PRO_VER'))) { ?>
                                                            <span class="dashicons dashicons-lock"></span>
                                                        <?php } ?>
                                                    </label>

                                                    <?php 
                                                    if (isset($settings[$key])) { ?>
                                                        <span class="ultp-block-settings dashicons dashicons-admin-generic"></span>
                                                        <div class="ultp-popup-container blocks-settings">
                                                            <div class="ultp-unlock-popup">
                                                                <form action="">
                                                                    <?php
                                                                        require_once ULTP_PATH.'classes/options/Settings.php';
                                                                        $obj = new \ULTP\Option_Settings();
                                                                        $obj->get_settings_data($settings[$key]['attr']);
                                                                    ?>
                                                                    <div class="ultp-data-message"></div>
                                                                    <div>
                                                                        <button class="ultp-addons-setting-save"><?php esc_html_e('Save Settings', 'ultimate-post'); ?></button>
                                                                    </div>
                                                                </form>
                                                                <button class="ultp-popup-close"></button>
                                                            </div>
                                                        </div>
                                                    <?php } ?>
                                                </div>
                                            </div>
                                            <div class="ultp-addon-desc ultp-addon-desc"><?php echo esc_html($val['desc']); ?></div>
                                        </div>
                                    </div>    
                                    <?php if ($require_plugin) { ?>
                                        <div class="ultp-plugin-required">
                                            <?php esc_html_e('This addon required this plugin:', 'ultimate-post'); ?> <b><?php echo wp_kses($require_plugin, 'post'); ?></b>
                                        </div>
                                    <?php } ?>
                                </div>
                            <?php } ?>
                    </div>
            </div>
        </div>
    <?php }
}
```
