PluginProbe
Post Grid Gutenberg Blocks – PostX / 1.2.2
Post Grid Gutenberg Blocks – PostX v1.2.2
5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 5.0.17 2.1.1 2.1.2 All 237 releases
← All changes | classes/Options.php +783 -313 5.0.361.2.2 View file →
@@ -1,354 +1,824 @@
1 1 <?php
2 +namespace ULTP;
2 3
3 -/**
4 - * Options Action.
5 - *
6 - * @package ULTP\Notice
7 - * @since v.1.0.0
8 - */
4 +defined('ABSPATH') || exit;
9 5
10 -namespace ULTP;
6 +class Options{
7 + public function __construct() {
8 + add_action( 'admin_menu', array( $this, 'menu_page_callback' ) );
9 + add_action( 'admin_init', array( $this, 'register_settings' ) );
10 + }
11 11
12 -use ULTP\Includes\Durbin\Xpo;
12 + public static function menu_page_callback() {
13 + add_menu_page(
14 + esc_html__( 'Post Blocks', 'ultimate-post' ),
15 + esc_html__( 'Post Blocks', 'ultimate-post' ),
16 + 'manage_options',
17 + 'ultp-settings',
18 + array( self::class, 'create_admin_page' ),
19 + ULTP_URL.'assets/img/menu-panel.svg'
20 + );
21 + }
13 22
14 -defined( 'ABSPATH' ) || exit;
23 + /**
24 + * Register a setting and its sanitization callback.
25 + */
26 + public static function register_settings() {
27 + register_setting( 'ultp_options', 'ultp_options', array( self::class, 'sanitize' ) );
28 + }
15 29
16 -/**
17 - * Options class.
18 - *
19 - * Handles plugin options and settings for Ultimate Post.
20 - *
21 - * @package ULTP\Options
22 - * @since 4.0.0
23 - */
24 -class Options {
30 + /**
31 + * Sanitization callback
32 + */
33 + public static function sanitize( $options ) {
34 + if ($options) {
35 + $settings = self::get_option_settings();
36 + foreach ($settings as $key => $setting) {
37 + if (!empty($key)) {
38 + $options[$key] = isset($options[$key]) ? sanitize_text_field($options[$key]) : '';
39 + }
40 + }
41 + }
42 + return $options;
43 + }
25 44
26 - /**
27 - * Setup class.
28 - *
29 - * @since v.1.0.0
30 - */
31 - public function __construct() {
32 - add_action( 'admin_init', array( $this, 'handle_external_redirects' ) );
33 - add_action( 'admin_menu', array( $this, 'menu_page_callback' ) );
34 - add_action( 'admin_footer', array( $this, 'sync_addon_submenu_visibility' ) );
35 - add_action( 'in_admin_header', array( $this, 'remove_all_notices' ) );
36 - add_filter( 'plugin_row_meta', array( $this, 'plugin_settings_meta' ), 10, 2 );
37 - add_filter( 'plugin_action_links_' . ULTP_BASE, array( $this, 'plugin_action_links_callback' ) );
38 - }
45 + public static function get_option_settings(){
46 + return array(
47 + 'css_save_as' => array(
48 + 'type' => 'select',
49 + 'label' => __('CSS Add Via', 'ultimate-post'),
50 + 'options' => array(
51 + 'wp_head' => __( 'Header - (Internal)','ultimate-post' ),
52 + 'filesystem' => __( 'File System - (External)','ultimate-post' ),
53 + ),
54 + 'default' => 'wp_head',
55 + 'desc' => __('Select where you want to save CSS.', 'ultimate-post')
56 + ),
57 + 'preloader_style' => array(
58 + 'type' => 'select',
59 + 'label' => __('Preloader Style', 'ultimate-post'),
60 + 'options' => array(
61 + 'style1' => __( 'Preloader Style 1','ultimate-post' ),
62 + 'style2' => __( 'Preloader Style 2','ultimate-post' ),
63 + ),
64 + 'default' => 'style1',
65 + 'desc' => __('Select Preloader Style.', 'ultimate-post')
66 + ),
67 + 'container_width' => array(
68 + 'type' => 'number',
69 + 'label' => __('Container Width', 'ultimate-post'),
70 + 'default' => '1140',
71 + 'desc' => __('Change Container Width.', 'ultimate-post')
72 + ),
73 + 'hide_import_btn' => array(
74 + 'type' => 'switch',
75 + 'label' => __('Hide Import Button', 'ultimate-post'),
76 + 'default' => '',
77 + 'desc' => __('Hide Import Layout Button from the Gutenberg Editor.', 'ultimate-post')
78 + ),
79 + );
80 + }
39 81
82 + public static function get_recommended_themes(){
83 + $recommended_themes = array(
84 + 'coblog' => array(
85 + 'name' => 'Coblog',
86 + 'slug' => 'coblog',
87 + 'url' => 'https://wordpress.org/themes/coblog',
88 + 'logo' => ULTP_URL.'assets/img/WordPress.png'
89 + ),
90 + 'blocksy' => array(
91 + 'name' => 'Blocksy',
92 + 'slug' => 'blocksy',
93 + 'url' => 'https://wordpress.org/themes/blocksy/',
94 + 'logo' => ULTP_URL.'assets/img/WordPress.png'
95 + ),
96 + );
40 97
41 - /**
42 - * Adds extra links to the plugin row meta on the plugins page.
43 - *
44 - * @param array $links Existing plugin meta links.
45 - * @param string $file Plugin file path.
46 - * @return array Modified plugin meta links.
47 - */
48 - public function plugin_settings_meta( $links, $file ) {
49 - if ( strpos( $file, 'ultimate-post.php' ) !== false ) {
50 - $new_links = array(
51 - 'ultp_docs' => '<a href="https://wpxpo.com/docs/" target="_blank">' . esc_html__( 'Docs', 'ultimate-post' ) . '</a>',
52 - 'ultp_tutorial' => '<a href="https://www.youtube.com/watch?v=JZxIflYKOuM&list=PLPidnGLSR4qcAwVwIjMo1OVaqXqjUp_s4" target="_blank">' . esc_html__( 'Tutorials', 'ultimate-post' ) . '</a>',
53 - 'ultp_support' => '<a href="' . esc_url(
54 - Xpo::generate_utm_link(
55 - array(
56 - 'url' => 'https://www.wpxpo.com/contact/',
57 - 'utmKey' => 'plugin_dir_support',
58 - )
59 - )
60 - ) . '" target="_blank">' . esc_html__( 'Support', 'ultimate-post' ) . '</a>',
61 - );
62 - $links = array_merge( $links, $new_links );
98 + $html = '';
99 + foreach ($recommended_themes as $key => $value) {
100 + $html .= '<div class="ultp-recommended-theme">';
101 + $html .= '<div class="ultp-recommended-image">';
102 + $html .= '<img src="'.$value['logo'].'" alt="'.$value['name'].'" />';
103 + $html .= '</div>';
104 + $html .= '<div class="ultp-recommended-name"><a target="_blank" href="'.$value['url'].'">'.$value['name'].'</a></div>';
105 + $html .= '<div class="ultp-recommended-button">';
106 + $html .= '<a target="_blank" href="'.$value['url'].'" class="button button-success">'.__('Download Now').'</a>';
107 + $html .= '</div>';
108 + $html .= '</div>';
109 + }
110 + echo $html;
111 + }
112 +
113 + public static function get_changelog_data() {
114 + $html = '';
115 + $resource_data = file_get_contents(ULTP_PATH.'/readme.txt', "r");
116 + $data = array();
117 + if ($resource_data) {
118 + $resource_data = explode('== Changelog ==', $resource_data);
119 + if (isset($resource_data[1])) {
120 + $resource_data = $resource_data[1];
121 + $resource_data = explode("\n", $resource_data);
122 + $inner = false;
123 + $count = -1;
124 +
125 + foreach ($resource_data as $element) {
126 + if ($element){
127 + if (substr_count($element, '=') > 1) {
128 + $count++;
129 + $temp = trim(str_replace('=', '', $element));
130 + if (strpos($temp, '-') !== false) {
131 + $temp = explode('-', $temp);
132 + $data[$count]['date'] = trim($temp[1]);
133 + $data[$count]['version'] = trim($temp[0]);
134 + }
135 + }
136 + if (strpos($element, '* New:') !== false) {
137 + $data[$count]['new'][] = trim(str_replace('* New:', '', $element));
138 + }
139 + if (strpos($element, '* Fix:') !== false) {
140 + $data[$count]['fix'][] = trim(str_replace('* Fix:', '', $element));
141 + }
142 + if (strpos($element, '* Update:') !== false) {
143 + $data[$count]['update'][] = trim(str_replace('* Update:', '', $element));
144 + }
145 + }
146 + }
147 + }
148 + }
149 + if (!empty($data)) {
150 + foreach ($data as $k => $inner_data) {
151 + $html .= '<div class="ultp-changelog-wrap">';
152 + foreach ($inner_data as $key => $changelog) {
153 + if ($key == 'date') {
154 + $html .= '<div class="ultp-changelog-date">'.__('Released on ', 'ultimate-post').' '.$changelog.'</div>';
155 + } elseif($key == 'version') {
156 + $html .= '<div class="ultp-changelog-version">'.__('Version', 'ultimate-post').' : '.$changelog.'</div>';
157 + } else {
158 + foreach ($changelog as $keyword => $val) {
159 + $html .= '<div class="ultp-changelog-title"><span class="changelog-'.$key.'">'.$key.'</span>'.$val.'</div>';
160 + }
161 + }
162 + }
163 + $html .= '</div>';
164 + }
165 + }
166 + echo $html;
167 + }
168 +
169 + public static function get_settings_data() {
170 + $html = '';
171 + $option_data = get_option( 'ultp_options' );
172 + if(!isset($option_data['css_save_as'])){
173 + $option_data = ultimate_post()->init_set_data();
63 174 }
64 - return $links;
65 - }
175 + $data = self::get_option_settings();
176 + $html .= '<div class="ultp-settings">';
177 + $html .= '<input type="hidden" name="option_page" value="ultp_options" />';
178 + $html .= '<input type="hidden" name="action" value="update" />';
179 + $html .= wp_nonce_field( "ultp_options-options" );
180 + foreach ($data as $key => $value) {
181 + $html .= '<div class="ultp-settings-wrap">';
182 + $html .= '<div class="ultp-settings-label">'.$value['label'].'</div>';
183 + $html .= '<div class="ultp-settings-field-wrap">';
184 + switch ($value['type']) {
66 185
67 - /**
68 - * Adds quick action links below the plugin name.
69 - *
70 - * @param array $links Default plugin action links.
71 - * @return array Modified plugin action links.
72 - */
73 - public function plugin_action_links_callback( $links ) {
74 - $offer_config = array(
75 - array(
76 - 'start' => '2026-07-06 00:00 Asia/Dhaka',
77 - 'end' => '2026-08-01 23:59 Asia/Dhaka',
78 - 'text' => __(
79 - 'Summer Sale - Up to 50% OFF',
80 - 'ultimate-post'
81 - ),
82 - 'utmKey' => 'summer_sale_meta',
83 - ),
84 - array(
85 - 'start' => '2026-08-02 00:00 Asia/Dhaka',
86 - 'end' => '2026-08-16 23:59 Asia/Dhaka',
87 - 'text' => __(
88 - 'Summer Sale - Up to 50% OFF',
89 - 'ultimate-post'
90 - ),
91 - 'utmKey' => 'summer_sale_meta',
92 - ),
93 - );
186 + case 'select':
187 + $html .= '<div class="ultp-settings-field">';
188 + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : '');
189 + $html .= '<select name="ultp_options['.$key.']">';
190 + foreach ( $value['options'] as $id => $label ) {
191 + $html .= '<option value="'.$id.'" '.( $val == $id ? ' selected="selected"':'').'>';
192 + $html .= strip_tags( $label );
193 + $html .= '</option>';
194 + }
195 + $html .= '</select>';
196 + $html .= '<p class="description">'.$value['desc'].'</p>';
197 + $html .= '</div>';
198 + break;
94 199
95 - $setting_link = array(
96 - 'ultp_options' => '<a href="' . esc_url( admin_url( 'admin.php?page=ultp-settings#startersites' ) ) . '">' . esc_html__( 'Starter Sites', 'ultimate-post' ) . '</a>',
97 - );
200 + case 'color':
201 + $html .= '<div class="ultp-settings-field">';
202 + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : '');
203 + $html .= '<input name="ultp_options['.$key.']" value="'.$val.'" class="ultp-color-picker" />';
204 + $html .= '<p class="description">'.$value['desc'].'</p>';
205 + $html .= '</div>';
206 + break;
98 207
99 - $upgrade_link = array();
208 + case 'number':
209 + $html .= '<div class="ultp-settings-field">';
210 + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : '');
211 + $html .= '<input type="number" name="ultp_options['.$key.']" value="'.$val.'"/>';
212 + $html .= '<p class="description">'.$value['desc'].'</p>';
213 + $html .= '</div>';
214 + break;
100 215
101 - // Free user or expired license user.
102 - if ( ! defined( 'ULTP_PRO_VER' ) || Xpo::is_lc_expired() ) {
216 + case 'switch':
217 + $html .= '<div class="ultp-settings-field">';
218 + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : '');
219 + $html .= '<input type="checkbox" value="yes" name="ultp_options['.$key.']" '.($val == 'yes' ? 'checked' : '').' />';
220 + $html .= '<p class="description">'.$value['desc'].'</p>';
221 + $html .= '</div>';
222 + break;
103 223
104 - $license_key = Xpo::get_lc_key() ?? '';
224 + default:
225 + # code...
226 + break;
105 227
106 - if ( Xpo::is_lc_expired() ) {
107 - $text = esc_html__( 'Renew License', 'ultimate-post' );
108 - $url = 'https://account.wpxpo.com/checkout/?edd_license_key=' . $license_key;
109 - } else {
228 + }
229 + $html .= '</div>';
230 + $html .= '</div>';
231 + }
232 + $html .= '<div class="ultp-settings-wrap ultp-submit-button">';
233 + $html .= '<div></div>'.get_submit_button();
234 + $html .= '</div>';
110 235
111 - $text = esc_html__( 'Upgrade to Pro', 'ultimate-post' );
112 - $url = Xpo::generate_utm_link(array(
113 - 'utmKey' => 'sub_menu',
114 - ));
236 + $html .= '</div>';
115 237
116 - foreach ( $offer_config as $offer ) {
117 - $current_time = gmdate( 'U' );
118 - $notice_start = gmdate( 'U', strtotime( $offer['start'] ) );
119 - $notice_end = gmdate( 'U', strtotime( $offer['end'] ) );
120 - if ( $current_time >= $notice_start && $current_time <= $notice_end ) {
121 - $url = Xpo::generate_utm_link(
122 - array(
123 - 'utmKey' => $offer['utmKey'],
124 - )
125 - );
126 - $text = $offer['text'];
127 - break;
128 - }
129 - }
130 - }
238 +
239 +
240 + echo '<form method="post" action="options.php">'.$html.'</form>';
241 + }
131 242
132 - $upgrade_link['ultp_pro'] = '<a style="color: #0062ff; font-weight: bold;" target="_blank" href="' . esc_url( $url ) . '">' . esc_html( $text ) . '</a>';
133 - }
134 243
135 - return array_merge( $setting_link, $links, $upgrade_link );
136 - }
244 + public static function get_support_data() {
245 + $html = '';
246 + $html .= '<div class="ultp-admin-sidebar">';
137 247
248 + $html .= '<div class="ultp-admin-card ultp-sidebar-card">';
249 + $html .= '<h3 class="ultp-sidebar-title">'.esc_html__( 'Coblog Theme', 'ultimate-post' ).'</h3>';
250 + $html .= '<p class="ultp-sidebar-content">'.esc_html__( 'Responsive WordPress Theme news theme built for personal blog, blogging, blogger, journal, lifestyle, magazine, photography, editorial, traveler and so on.', 'ultimate-post' ).'</p>';
251 + $html .= '<h4>'.esc_html__( 'Core Features', 'ultimate-post' ).'</h4>';
252 + $html .= '<ul class="ultp-sidebar-list">';
253 + $html .= '<li>'.esc_html__( 'Based On Gutenberg', 'ultimate-post' ).'</li>';
254 + $html .= '<li>'.esc_html__( 'Header Variations', 'ultimate-post' ).'</li>';
255 + $html .= '<li>'.esc_html__( 'Footer Variations', 'ultimate-post' ).'</li>';
256 + $html .= '<li>'.esc_html__( 'Advanced Option Panel', 'ultimate-post' ).'</li>';
257 + $html .= '<li>'.esc_html__( 'Box Width layout', 'ultimate-post' ).'</li>';
258 + $html .= '<li>'.esc_html__( 'Unlimited Color Options', 'ultimate-post' ).'</li>';
259 + $html .= '</ul>';
260 + $html .= '<a class="button button-success" target="_blank" href="https://wordpress.org/themes/coblog">'.__('Free Download', 'ultimate-post').'</a>';
261 + $html .= '</div>';//ultp-admin-card
138 262
139 - /**
140 - * Add admin menu option page and submenus.
141 - *
142 - * @since v.1.0.0
143 - * @return void No return value.
144 - */
145 - public static function menu_page_callback() {
146 - $ultp_menu_icon = 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MCA0OC4zIj4NCiAgPGRlZnM+DQogICAgPHN0eWxlPg0KICAgICAgLmNscy0xIHsNCiAgICAgICAgZmlsbDogI2E3YWFhZDsNCiAgICAgIH0NCiAgICA8L3N0eWxlPg0KICA8L2RlZnM+DQogIDx0aXRsZT5Qb3N0eCBJY29uIGNtcHJzc2QgU1ZHPC90aXRsZT4NCiAgPGc+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTguODEsOXY4LjlIOC4xOUE2LjE5LDYuMTksMCwwLDAsMiwyMy43N2EzLjE2LDMuMTYsMCwwLDEtMi0yLjk0VjRBMy4xNiwzLjE2LDAsMCwxLDMuMTUuODVIMjBhMy4xOCwzLjE4LDAsMCwxLDMsMi4zMUE2LjIxLDYuMjEsMCwwLDAsMTguODEsOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDUsOVYyM0gzMS4xYTYuMjMsNi4yMywwLDAsMC00LjkzLTQuOTNBNS41NCw1LjU0LDAsMCwwLDI1LDE3Ljk0SDIxLjg1VjlBMy4xNSwzLjE1LDAsMCwxLDIzLjEzLDYuNWEzLjEyLDMuMTIsMCwwLDEsMS40My0uNThsLjA5LDBINDEuODNBMy4xNCwzLjE0LDAsMCwxLDQ1LDlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0wLjg1KSIvPg0KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLDI5LjE3VjQ2YTMuMTYsMy4xNiwwLDAsMS0zLjE1LDMuMTVIMzBhMy4xOCwzLjE4LDAsMCwxLTMtMi4zMUE2LjIyLDYuMjIsMCwwLDAsMzEuMjEsNDFWMjZINDYuODVhMy4zLDMuMywwLDAsMSwxLjE0LjIxQTMuMTYsMy4xNiwwLDAsMSw1MCwyOS4xN1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjguMTYsMjQuMTNWNDFhMy4xMywzLjEzLDAsMCwxLTEuMjksMi41NCwzLDMsMCwwLDEtMS40Ny41OGwwLDBIOC4xOUEzLjE1LDMuMTUsMCwwLDEsNSw0MVYyNGEzLjE3LDMuMTcsMCwwLDEsMy4xNS0zSDI1YTMuMTIsMy4xMiwwLDAsMSwxLjE0LjIyLDMuMjQsMy4yNCwwLDAsMSwxLjksMi4xQTMuNjMsMy42MywwLDAsMSwyOC4xNiwyNC4xM1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogIDwvZz4NCjwvc3ZnPg0K';
147 - $menupage_cap = apply_filters( 'ultp_menu_page_capability', 'manage_options' );
148 - add_menu_page(
149 - __( 'PostX', 'ultimate-post' ),
150 - __( 'PostX', 'ultimate-post' ),
151 - $menupage_cap,
152 - 'ultp-settings',
153 - array( self::class, 'ultp_dashboard' ),
154 - $ultp_menu_icon,
155 - 58.5
156 - );
263 + $html .= '</div>';//ultp-admin-sidebar
264 + echo $html;
265 + }
157 266
158 - add_submenu_page(
159 - 'ultp-settings',
160 - __( 'PostX Dashboard', 'ultimate-post' ),
161 - __( 'Getting Started', 'ultimate-post' ),
162 - $menupage_cap,
163 - 'ultp-settings'
164 - );
267 + /**
268 + * Settings page output
269 + */
270 + public static function create_admin_page() { ?>
271 + <style>
272 + /* ----Common--- */
273 + #wpbody-content, #wpwrap{
274 + background-color: #f2f2f2;
275 + -webkit-font-smoothing: subpixel-antialiased;
276 + }
277 + .error, .notice {
278 + display: none;
279 + }
280 + #wpcontent {
281 + padding-left: 0px;
282 + }
283 + .ultp-option-body {
284 + position: relative;
285 + font-size: 15px;
286 + max-width: 100%;
287 + display:block;
288 + }
165 289
166 - $menu_lists = array(
167 - 'startersites' => esc_html__( 'Starter Sites', 'ultimate-post' ),
168 - 'builder' => esc_html__( 'Site Builder', 'ultimate-post' ),
169 - 'saved-templates' => esc_html__( 'Saved Templates', 'ultimate-post' ),
170 - 'custom-font' => esc_html__( 'Custom Font', 'ultimate-post' ),
171 - 'addons' => esc_html__( 'Add-ons', 'ultimate-post' ),
172 - 'blocks' => esc_html__( 'Blocks', 'ultimate-post' ),
173 - 'settings' => esc_html__( 'Settings', 'ultimate-post' ),
174 - );
175 - if ( defined( 'ULTP_PRO_VER' ) ) {
176 - $menu_lists['license'] = esc_html__( 'License ', 'ultimate-post' );
177 - }
290 + /* ----Header--- */
291 + .ultp-setting-header {
292 + width: 100%;
293 + display: flex;
294 + align-items: center;
295 + padding: 20px 40px;
296 + box-sizing: border-box;
297 + background: #fff;
298 + }
299 + .ultp-setting-header img {
300 + margin-left:auto;
301 + }
302 + .ultp-setting-header-info h1 {
303 + margin: 0;
304 + font-weight: 300;
305 + font-size: 35px;
306 + line-height: normal;
307 + color: #000;
308 + }
309 + .ultp-setting-header-info p {
310 + font-size: 14px;
311 + margin-top: 5px;
312 + margin-bottom: 0;
313 + font-weight:300;
314 + }
315 + .ultp-setting-header-info p a {
316 + margin-left: 5px;
317 + text-decoration: none;
318 + color: #007AFF;
319 + }
320 + .ultp-setting-header-info p a span {
321 + color: #FF9920;
322 + margin-left: 10px;
323 + font-size: 18px;
324 + letter-spacing: 4px;
325 + }
178 326
179 - foreach ( $menu_lists as $key => $val ) {
180 - add_submenu_page(
181 - 'ultp-settings',
182 - $val,
183 - $val,
184 - $menupage_cap,
185 - 'ultp-settings#' . $key,
186 - array( __CLASS__, 'render_main' )
187 - );
188 - }
189 - add_submenu_page(
190 - 'ultp-settings',
191 - esc_html__( 'Initial Setup', 'ultimate-post' ),
192 - esc_html__( 'Initial Setup', 'ultimate-post' ),
193 - $menupage_cap,
194 - 'ultp-setup-wizard',
195 - array( __CLASS__, 'ultp_wizard_page' )
196 - );
197 327
198 - $pro_link = '';
199 - $pro_link_text = '';
200 328
201 - // Check if current date is between November 5th and December 10th
202 - $current_date = current_time( 'Y-m-d' );
203 - $start_date = date( 'Y' ) . '-01-01'; // January 1st of current year
204 - $end_date = date( 'Y' ) . '-02-15'; // February 15th of current year
205 - $menu_pro_text_period = ( $current_date >= $start_date && $current_date <= $end_date );
206 329
207 - if ( ! Xpo::is_lc_active() ) {
208 - $pro_link = Xpo::generate_utm_link(
209 - array(
210 - 'utmKey' => 'sub_menu',
211 - )
212 - );
213 - $pro_link_text = $menu_pro_text_period ? __( 'New Year Offer!', 'ultimate-post' ) : __( 'Upgrade to Pro', 'ultimate-post' );
214 - } elseif ( Xpo::is_lc_expired() ) {
215 - $license_key = Xpo::get_lc_key();
216 - $pro_link = 'https://account.wpxpo.com/checkout/?edd_license_key=' . $license_key;
217 - $pro_link_text = __( 'Renew License', 'ultimate-post' );
218 - }
330 + /* ----common--- */
331 + .ultp-admin-card {
332 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
333 + background-color: #fff;
334 + }
335 + .ultp-title {
336 + margin-top:0;
337 + color: #000;
338 + }
339 + .ultp-overview {
340 + padding: 50px;
341 + display:flex;
342 + }
343 + .ultp-overview-content {
344 + max-width: 50%;
345 + padding-right: 30px;
346 + }
347 + .wp-core-ui .button-primary {
348 + background: #006ade;
349 + border-color: #006ade;
350 + border-radius: 2px;
351 + padding: 3px 15px;
352 + font-weight: 400;
353 + height: auto;
354 + }
355 + .wp-core-ui .button.button-success {
356 + background: #14bd62;
357 + border-color: #14bd62;
358 + color: #fff;
359 + margin-left: 10px;
360 + transition: 400ms;
361 + border-radius: 2px;
362 + padding: 3px 15px;
363 + font-weight: 400;
364 + height: auto;
365 + }
366 + .wp-core-ui .button.button-success:hover {
367 + background: #14d26c;
368 + border-color: #14d26c;
369 + }
370 + .wp-core-ui .button.button-primary:hover {
371 + background: #007afe;
372 + border-color: #007afe;
373 + }
374 + .wp-core-ui .button.button-success:focus {
375 + box-shadow: 0 0 0 1px #10b35b;
376 + }
377 + .wp-core-ui .button.button-primary:focus {
378 + box-shadow: 0 0 0 1px #016BDF;
379 + }
380 + .ultp-overview-text {
381 + font-size: 14px;
382 + font-weight: 300;
383 + line-height: 25px;
384 + }
385 + .ultp-overview-text .button {
386 + margin-top: 30px;
387 + }
388 + .ultp-overview-feature {
389 + margin-top: 40px;
390 + }
219 391
220 - if ( ! empty( $pro_link ) ) {
221 - ob_start();
222 - ?>
223 - <a href="<?php echo esc_url( $pro_link ); ?>" target="_blank" class="ultp-go-pro">
224 - <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
225 - <path d="M2.86 6.553a.5.5 0 01.823-.482l3.02 2.745c.196.178.506.13.64-.098L9.64 4.779a.417.417 0 01.72 0l2.297 3.939a.417.417 0 00.64.098l3.02-2.745a.5.5 0 01.823.482l-1.99 8.63a.833.833 0 01-.813.646H5.663a.833.833 0 01-.812-.646L2.86 6.553z" stroke="currentColor" stroke-width="1.5"></path>
226 - </svg>
227 - <span><?php echo esc_html( $pro_link_text ); ?></span>
228 - </a>
229 - <?php
230 - $submenu_content = ob_get_clean();
392 + .ultp-dashboard-list {
393 + list-style: none;
394 + padding: 0;
395 + }
396 + .ultp-dashboard-list li {
397 + font-size: 14px;
398 + font-weight: 300;
399 + line-height: 26px;
400 + position: relative;
401 + padding: 0 20px;
402 + display: inline-block;
403 + width: 40%;
404 + }
405 + .ultp-dashboard-list li:after {
406 + content: "";
407 + left: 0;
408 + width: 8px;
409 + height: 8px;
410 + border-radius: 100px;
411 + background: #dcdcdc;
412 + position: absolute;
413 + top: 50%;
414 + margin-top: -4px;
415 + }
231 416
232 - add_submenu_page(
233 - 'ultp-settings',
234 - '',
235 - $submenu_content,
236 - 'manage_options',
237 - 'ultp-pro',
238 - array( self::class, 'handle_external_redirects' )
239 - );
240 - }
241 417
242 - add_theme_page(
243 - __( 'Starter Sites', 'ultimate-post' ),
244 - __( 'Starter Sites', 'ultimate-post' ),
245 - $menupage_cap,
246 - 'ultp-startersites',
247 - array( self::class, 'handle_external_redirects' )
248 - );
249 - }
250 418
251 - /**
252 - * Sync addon-backed WordPress submenu items with addon enabled status.
253 - *
254 - * @since v.4.1.7
255 - * @return void No return value.
256 - */
257 - public function sync_addon_submenu_visibility() {
258 - $settings = ultimate_post()->get_setting();
259 - $submenus = array(
260 - 'builder' => 'ultp_builder',
261 - 'saved-templates' => 'ultp_templates',
262 - 'custom-font' => 'ultp_custom_font',
263 - );
419 + /* ----Sidebar--- */
420 + .ultp-sidebar-card {
421 + padding: 0 20px 25px;
422 + }
423 + .ultp-sidebar-title {
424 + margin: 0 -20px 0;
425 + background: #FAFAFA;
426 + padding: 15px 20px;
427 + font-size: 16px;
428 + border-bottom: 1px solid #EEEEEE;
429 + color: #000;
430 + }
431 + .ultp-sidebar-card h4 {
432 + color: #000;
433 + margin-top: 25px;
434 + }
435 + .ultp-sidebar-list {
436 + list-style: none;
437 + padding: 0;
438 + margin-bottom: 30px;
439 + }
440 + .ultp-sidebar-list li {
441 + font-size: 13px;
442 + padding: 0 20px;
443 + position: relative;
444 + margin-right: auto;
445 + line-height: 24px;
446 + }
447 + .ultp-sidebar-list li:after {
448 + content: "";
449 + left: 0;
450 + width: 8px;
451 + height: 8px;
452 + border-radius: 100px;
453 + background: #dcdcdc;
454 + position: absolute;
455 + top: 50%;
456 + margin-top: -4px;
457 + }
458 + .ultp-sidebar-content {
459 + margin-top: 25px;
460 + }
264 461
265 - foreach ( $submenus as $slug => $setting_key ) {
266 - $submenus[ $slug ] = isset( $settings[ $setting_key ] ) && $settings[ $setting_key ] !== 'false';
267 - }
268 - ?>
269 - <script>
270 - ( function() {
271 - const postxAddonSubmenus = <?php echo wp_json_encode( $submenus ); ?>;
462 + /* ----Tab--- */
463 + .ultp-content-wrap {
464 + padding: 40px;
465 + display: flex;
466 + width: 100%;
467 + box-sizing: border-box;
468 + }
469 + .ultp-tab-content-wrap {
470 + width: 75%;
471 + margin-right: 30px;
472 + -webkit-box-flex: 0;
473 + -ms-flex: 0 0 75%;
474 + flex: 0 0 75%;
475 + max-width: 75%;
476 + }
272 477
273 - Object.keys( postxAddonSubmenus ).forEach( function( slug ) {
274 - const link = document.querySelector( '#adminmenu a[href*="page=ultp-settings#' + slug + '"]' );
275 - const item = link ? link.closest( 'li' ) : null;
478 + .ultp-tab-title-wrap{
479 + padding: 0 40px;
480 + background-color: #ffffff;
481 + border-bottom: 3px solid #d5d5d5;
482 + }
483 + .ultp-tab-title{
484 + font-weight: 300;
485 + color: #555;
486 + font-size: 15px;
487 + display: inline-block;
488 + margin-right: 25px;
489 + padding: 10px 0;
490 + }
491 + .ultp-tab-title:hover{
492 + cursor: pointer;
493 + }
494 + .ultp-tab-title.active{
495 + border-bottom: 3px solid #007AFF;
496 + color: #007AFF;
497 + margin-bottom: -3px;
498 + }
499 + .ultp-tab-content{
500 + display: none;
501 + }
502 + .ultp-tab-content.active{
503 + display: block;
504 + }
276 505
277 - if ( ! item ) {
278 - return;
279 - }
506 + /* ----Settings--- */
507 + .ultp-settings-wrap {
508 + margin-bottom: 20px;
509 + display: grid;
510 + grid-template-columns: 0.8fr 1fr;
511 + }
280 512
281 - item.id = 'postx-submenu-' + slug;
282 - item.style.display = postxAddonSubmenus[ slug ] ? '' : 'none';
283 - } );
284 - }() );
285 - </script>
286 - <?php
287 - }
288 513
289 - /**
290 - * Handle external redirects for menu and pro links.
291 - *
292 - * @since v.1.0.0
293 - * @return void No return value.
294 - */
295 - public function handle_external_redirects() {
296 - if (empty($_GET['page'])) { // @codingStandardsIgnoreLine
297 - return;
298 - }
299 - $_page = sanitize_key( $_GET['page'] );
300 - if ('ultp-startersites' === $_page) { // @codingStandardsIgnoreLine
301 - exit( wp_safe_redirect( admin_url( 'admin.php?page=ultp-settings#startersites' ) ) );
302 - } else if ('go_postx_pro' === $_page) { // @codingStandardsIgnoreLine
303 - wp_redirect(
304 - Xpo::generate_utm_link(
305 - array(
306 - 'utmKey' => 'dashboard_go_pro',
307 - )
308 - )
309 - );
310 - die();
311 - }
312 - }
514 + /* ----Recomended--- */
515 + .ultp-recommended-theme{
516 + max-width: 100%;
517 + background-color: #ffffff;
518 + border-radius: 3px;
519 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
520 + margin-bottom: 30px;
521 + }
522 + .ultp-recommended-image, .ultp-recommended-name, .ultp-recommended-button {
523 + display: inline-block;
524 + vertical-align: middle;
525 + }
526 + .ultp-recommended-name {
527 + font-size: 18px;
528 + margin-left: 20px;
529 + }
530 + .ultp-recommended-name a {
531 + transition: 400ms;
532 + color: #000000;
533 + text-decoration: none;
534 + transition: 400ms;
535 + }
536 + .ultp-recommended-name a:hover {
537 + color: #007AFF;
538 + }
539 + .ultp-recommended-image {
540 + border-right: 1px solid #ececec;
541 + }
542 + .ultp-recommended-image img {
543 + width: 70px;
544 + }
545 + .ultp-recommended-button {
546 + float: right;
547 + margin: 20px 20px 0 0;
548 + position: relative;
549 + }
550 + .ultp-recommended-button a{
551 + float: right;
552 + transition: 200ms;
553 + text-decoration: none;
554 + }
555 + .ultp-recommended-button a:hover{
556 + cursor: pointer;
557 + }
313 558
314 - /**
315 - * Render the wizard page.
316 - *
317 - * @since v.2.4.4
318 - */
319 - public static function ultp_wizard_page() {
320 - ?>
321 - <div class="ultp-wizard-page-wrap" id="ultp-wizard-page"></div>
322 - <?php
323 - }
559 + /* ---Video Tutorials--- */
560 + .ultp-overview-video iframe {
561 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
562 + }
563 + .ultp-video-tutorials {
564 + display: grid;
565 + grid-template-columns: 1fr 1fr 1fr;
566 + grid-gap: 30px;
567 + }
568 + .ultp-video-tutorial {
569 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
570 + background-color: #fff;
571 + }
572 + .ultp-video-tutorial iframe {
573 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
574 + width: 100%;
575 + height: 207px;
576 + }
577 + .ultp-video-tutorial h4 {
578 + color: #000;
579 + margin: 0;
580 + padding: 15px 20px 20px;
581 + }
582 + /* ---Changelog--- */
583 + .ultp-changelog-wrap {
584 + background-color: #ffffff;
585 + margin: 0 auto 30px;
586 + padding: 25px 30px;
587 + position: relative;
588 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
589 + }
590 + .ultp-changelog-date{
591 + font-size: 14px;
592 + display: inline-block;
593 + right: 30px;
594 + position: absolute;
595 + font-weight: 300;
596 + }
597 + .ultp-changelog-version{
598 + font-size: 16px;
599 + color: #000000;
600 + font-weight: 700;
601 + margin-bottom: 20px;
602 + }
603 + .ultp-changelog-title {
604 + text-transform: capitalize;
605 + font-size: 14px;
606 + color: #555555;
607 + line-height: 28px;
608 + font-weight: 300;
609 + margin-bottom: 8px;
610 + }
611 + .ultp-changelog-title > span {
612 + padding: 2px 10px;
613 + border-radius: 3px;
614 + margin-right: 10px;
615 + }
616 + .changelog-fix{
617 + color: #721c24;
618 + background-color: #f8d7da;
619 + border-color: #f5c6cb;
620 + }
621 + .changelog-update{
622 + color: #856404;
623 + background-color: #fff3cd;
624 + border-color: #ffeeba;
625 + }
626 + .changelog-new{
627 + color: #155724;
628 + background-color: #d4edda;
629 + border-color: #c3e6cb;
630 + }
324 631
325 - /**
326 - * Render the dashboard page.
327 - *
328 - * @since v.1.0.0
329 - * @return void No return value.
330 - */
331 - public static function ultp_dashboard() {
332 - echo '<div id="ultp-dashboard"></div>';
333 - }
632 + /* ----Responsive--- */
633 + @media (max-width: 1500px) {
634 + .ultp-overview {
635 + flex-wrap: wrap;
636 + flex-direction: column-reverse;
637 + }
638 + .ultp-overview-content {
639 + max-width: 100%;
640 + }
641 + .ultp-overview-video {
642 + margin-bottom: 40px;
643 + }
644 + .ultp-overview-video iframe {
645 + width: 640px;
646 + height: 360px;
647 + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5);
648 + }
649 + .ultp-video-tutorials {
650 + grid-template-columns: 1fr 1fr;
651 + }
652 + }
653 + @media (max-width: 1400px) {
654 + .ultp-sidebar-card .button.button-primary {
655 + text-align: center;
656 + display: block;
657 + }
658 + .ultp-sidebar-card .button.button-success {
659 + text-align: center;
660 + display: block;
661 + margin-left: 0;
662 + margin-top: 10px;
663 + }
664 + }
665 + @media (max-width: 1200px) {
666 + .ultp-content-wrap {
667 + flex-wrap: wrap;
668 + }
669 + .ultp-tab-content-wrap {
670 + width: 100%;
671 + margin-right: 0;
672 + -webkit-box-flex: 0;
673 + -ms-flex: 0 0 100%;
674 + flex: 0 0 100%;
675 + max-width: 100%;
676 + }
677 + .ultp-admin-sidebar {
678 + margin-top: 40px;
679 + }
680 + }
681 + @media (max-width: 1000px) {
682 + .ultp-setting-header-info h1 {
683 + font-size: 28px;
684 + }
685 + .ultp-overview-video iframe {
686 + width: 350px;
687 + height: 250px;
688 + }
689 + .ultp-setting-header {
690 + padding: 20px 30px;
691 + }
692 + .ultp-tab-title-wrap {
693 + padding: 0 30px;
694 + }
695 + .ultp-overview {
696 + padding: 30px;
697 + }
698 + .ultp-video-tutorials {
699 + grid-template-columns: 1fr;
700 + }
701 + }
702 + </style>
334 703
335 - /**
336 - * Remove all notifications from menu page.
337 - *
338 - * @since v.1.0.0
339 - * @return void No return value.
340 - */
341 - public static function remove_all_notices() {
342 - if (isset($_GET['page'])) { // @codingStandardsIgnoreLine
343 - $page = sanitize_key($_GET['page']); // @codingStandardsIgnoreLine
344 - if (
345 - $page === 'ultp-settings' ||
346 - $page === 'ultp-license' ||
347 - $page === 'ultp-setup-wizard'
348 - ) {
349 - remove_all_actions( 'admin_notices' );
350 - remove_all_actions( 'all_admin_notices' );
351 - }
352 - }
353 - }
704 + <div class="ultp-option-body">
705 + <div class="ultp-setting-header">
706 + <div class="ultp-setting-header-info">
707 + <h1>
708 + <?php _e('Welcome to <strong>Gutenberg Post Blocks</strong> - Version', 'ultimate-post'); ?><span> <?php echo ULTP_VER; ?></span>
709 + </h1>
710 + <p><?php esc_html_e('Most Powerful & Advanced Gutenberg Kit', 'ultimate-post'); ?><a href="https://wordpress.org/support/plugin/ultimate-post/reviews/#new-post"><?php esc_html_e('Rate the plugin', 'ultimate-post'); ?><span>★★★★★<span></a></p>
711 + </div>
712 + <img src="<?php echo ULTP_URL.'assets/img/logo-option.svg'; ?>" alt="<?php _e('Gutenberg Post Blocks', 'ultimate-post'); ?>">
713 + </div>
714 + <div class="ultp-tab-wrap">
715 + <div class="ultp-tab-title-wrap">
716 + <div class="ultp-tab-title active"><?php _e('Getting Started', 'ultimate-post'); ?></div>
717 + <div class="ultp-tab-title"><?php _e('General Settings', 'ultimate-post'); ?></div>
718 + <div class="ultp-tab-title"><?php _e('Recommended Theme', 'ultimate-post'); ?></div>
719 + <div class="ultp-tab-title"><?php _e('Video Tutorials', 'ultimate-post'); ?></div>
720 + <div class="ultp-tab-title"><?php _e('Changelog', 'ultimate-post'); ?></div>
721 + </div>
722 + <div class="ultp-content-wrap">
723 + <div class="ultp-tab-content-wrap">
724 + <div class="ultp-tab-content active"><!-- #Recommended Theme Content -->
725 + <div class="ultp-overview ultp-admin-card">
726 + <div class="ultp-overview-content">
727 + <div class="ultp-overview-text">
728 + <h3 class="ultp-title"><?php esc_html_e( 'Quick Overview', 'ultimate-post' ); ?></h3>
729 + <?php esc_html_e('Gutenberg Post Blocks is a Gutenberg post block plugins for creating beautiful Gutenberg post grid blocks, post listing blocks, post slider blocks and post carousel blocks within a few seconds.', 'ultimate-post'); ?>
730 + <div>
731 + <a href="https://www.wpxpo.com/" class="button button-primary"><?php esc_html_e('Plugin Details', 'ultimate-post'); ?></a>
732 + <a class="button button-success" target="_blank" href="https://demo.wpxpo.com/layouts/"><?php esc_html_e('Free Layout Pack', 'ultimate-post'); ?></a>
733 + </div>
734 + </div><!--/.ultp-about-text-->
735 + <div class="ultp-overview-feature">
736 + <h3 class="ultp-title"><?php esc_html_e( 'Core Features', 'ultimate-post' ); ?></h3>
737 + <ul class="ultp-dashboard-list">
738 + <li><?php esc_html_e( 'Infinite Load More', 'ultimate-post' ); ?></li>
739 + <li><?php esc_html_e( 'Advanced Pagination', 'ultimate-post' ); ?></li>
740 + <li><?php esc_html_e( 'Advanced Query', 'ultimate-post' ); ?></li>
741 + <li><?php esc_html_e( 'Premade Layouts', 'ultimate-post' ); ?></li>
742 + <li><?php esc_html_e( 'Premade Blocks', 'ultimate-post' ); ?></li>
743 + <li><?php esc_html_e( 'Post List View', 'ultimate-post' ); ?></li>
744 + <li><?php esc_html_e( 'Post Grid View', 'ultimate-post' ); ?></li>
745 + <li><?php esc_html_e( 'Filter Option', 'ultimate-post' ); ?></li>
746 + <li><?php esc_html_e( 'Post Carousel', 'ultimate-post' ); ?></li>
747 + <li><?php esc_html_e( 'Image Overlay', 'ultimate-post' ); ?></li>
748 + </ul>
749 + </div><!--/.ultp-overview-feature-->
750 + </div><!--/.ultp-overview-content-->
751 + <div class="ultp-overview-video">
752 + <h3 class="ultp-title"><?php esc_html_e( 'Getting started', 'ultimate-post' ); ?></h3>
753 + <iframe width="500" height="315" src="https://www.youtube.com/embed/JZxIflYKOuM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
754 + </div>
755 + </div><!--/.ultp-dashboard-->
756 +
757 + </div>
758 + <div class="ultp-tab-content"><!-- #Settings Content -->
759 + <div class="ultp-overview ultp-admin-card"><!-- #Settings Content -->
760 + <?php self::get_settings_data(); ?>
761 + </div>
762 + </div>
763 + <div class="ultp-tab-content"><!-- #Recommended Theme Content -->
764 + <div class="ultp-admin-themes"><!-- #Settings Content -->
765 + <?php self::get_recommended_themes(); ?>
766 + </div>
767 + </div>
768 + <div class="ultp-tab-content"><!-- #Video Tutorial -->
769 + <div class="ultp-video-tutorials">
770 + <div class="ultp-video-tutorial">
771 + <iframe src="https://www.youtube.com/embed/S0kU_FSa2wc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
772 + <h4><?php esc_html_e('How to Import Layouts','ultimate-post'); ?></h4>
773 + </div>
774 + <div class="ultp-video-tutorial">
775 + <iframe src="https://www.youtube.com/embed/lvRO359JuPw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
776 + <h4><?php esc_html_e('How to use advaced query builder','ultimate-post'); ?></h4>
777 + </div>
778 + <div class="ultp-video-tutorial">
779 + <iframe width="560" height="315" src="https://www.youtube.com/embed/Eoz5yr8BAWY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
780 + <h4><?php esc_html_e('How to use Post Slider','ultimate-post'); ?></h4>
781 + </div>
782 + <div class="ultp-video-tutorial">
783 + <iframe src="https://www.youtube.com/embed/gqaXZ9nQEV8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
784 + <h4><?php esc_html_e('How to use Advanced Pagination','ultimate-post'); ?></h4>
785 + </div>
786 + <div class="ultp-video-tutorial">
787 + <iframe width="560" height="315" src="https://www.youtube.com/embed/kwGhNfBD6AA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
788 + <h4><?php esc_html_e('How to use Pre-made Blocks','ultimate-post'); ?></h4>
789 + </div>
790 + <div class="ultp-video-tutorial">
791 + <iframe src="https://www.youtube.com/embed/bcZJt2aN7hM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
792 + <h4><?php esc_html_e('How to use Image Overlay','ultimate-post'); ?></h4>
793 + </div>
794 + <div class="ultp-video-tutorial">
795 + <iframe src="https://www.youtube.com/embed/2yIcx-2QkiE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
796 + <h4><?php esc_html_e('How to use Category','ultimate-post'); ?></h4>
797 + </div>
798 + <div class="ultp-video-tutorial">
799 + <iframe src="https://www.youtube.com/embed/WGRy7CHcMFU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
800 + <h4><?php esc_html_e('How to use Meta','ultimate-post'); ?></h4>
801 + </div>
802 + </div>
803 + </div>
804 + <div class="ultp-tab-content"><!-- #Changelog Content -->
805 + <?php self::get_changelog_data(); ?>
806 + </div>
807 + </div>
808 + <?php self::get_support_data(); ?>
809 + </div>
810 + </div>
811 +
812 + <script type="text/javascript">
813 + jQuery( document ).ready(function() {
814 + jQuery( document ).on( "click", '.ultp-tab-title', function(e){
815 + jQuery(this).closest('.ultp-tab-wrap').find('.ultp-tab-title').removeClass('active').eq(jQuery(this).index()).addClass('active')
816 + jQuery(this).closest('.ultp-tab-wrap').find('.ultp-tab-content').removeClass('active').eq(jQuery(this).index()).addClass('active');
817 + });
818 + });
819 + </script>
820 + </div>
821 +
822 + <?php }
354 823 }
824 +