PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.6.1
ShopBuilder – WooCommerce Builder For Elementor v2.6.1
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Controllers/Builder/BuilderCpt.php +65 -35 2.1.9 → 2.6.1 View file →
@@ -8,8 +8,9 @@
8 8 namespace RadiusTheme\SB\Controllers\Builder;
9 9
10 10 defined( 'ABSPATH' ) || exit();
11 11
12 +use RadiusTheme\SB\Models\TemplateSettings;
12 13 use WP_Query;
13 14 use RadiusTheme\SB\Helpers\Fns;
14 15 use RadiusTheme\SB\Helpers\BuilderFns;
15 16 use RadiusTheme\SB\Traits\SingletonTrait;
@@ -34,15 +35,13 @@
34 35 add_action( 'manage_' . BuilderFns::$post_type_tb . '_posts_custom_column', [ $this, 'custom_columns' ], 10, 2 );
35 36 add_filter( 'manage_edit-' . BuilderFns::$post_type_tb . '_sortable_columns', [ $this, 'register_sortable_columns' ] );
36 37 add_action( 'pre_get_posts', [ $this, 'sortable_columns_query' ] );
37 38 add_filter( 'template_include', [ $this, 'builder_template' ], 99 );
39 + add_filter( 'template_redirect', [ $this, 'restrict_preview_access' ], 99 );
38 40
39 41 add_filter( 'parse_query', [ $this, 'query_filter' ] );
40 42 // add filter for search.
41 43 add_action( 'restrict_manage_posts', [ $this, 'add_filter' ] );
42 -
43 - add_action( 'in_admin_header', [ $this, 'remove_all_notices' ], 1000 );
44 -
45 44 }
46 45
47 46
48 47 /**
@@ -68,9 +67,8 @@
68 67 <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $selected ); ?>><?php echo esc_html( $value ); ?></option>
69 68 <?php } ?>
70 69 </select>
71 70 <?php
72 -
73 71 }
74 72
75 73 /**
76 74 * Post type function
@@ -130,10 +128,10 @@
130 128 'with_front' => true,
131 129 'feeds' => false,
132 130 ],
133 131 'query_var' => true,
134 - 'publicly_queryable' => apply_filters( 'rtsb/builder/args/publicly_queryable', true ),
135 - 'capability_type' => 'product',
132 + 'publicly_queryable' => true,
133 + // 'capability_type' => 'product', Will Remove this line in the future.
136 134 'show_in_rest' => true,
137 135 'rest_base' => BuilderFns::$post_type_tb,
138 136 ];
139 137
@@ -142,9 +140,8 @@
142 140 register_post_type( BuilderFns::$post_type_tb, $tb_args );
143 141
144 142 // Flash rewrite rules.
145 143 $this->flush_rewrite_rules();
146 -
147 144 }
148 145
149 146 /**
150 147 * Flush rewrite
@@ -189,16 +186,16 @@
189 186 *
190 187 * @return void
191 188 */
192 189 public function custom_columns( $column, $post_id ) {
193 - $post_id = absint( $post_id );
194 - $types = BuilderFns::builder_page_types();
195 - $type = BuilderFns::builder_type( $post_id ) ? BuilderFns::builder_type( $post_id ) : array_key_first( $types );
190 + $post_id = absint( $post_id );
191 + $types = BuilderFns::builder_page_types();
192 + $template_type = BuilderFns::builder_type( $post_id ) ? BuilderFns::builder_type( $post_id ) : array_key_first( $types );
196 193
197 194 switch ( $column ) {
198 195 case 'type':
199 - $the_type = ! empty( $types[ $type ] ) ? esc_html( ucwords( $types[ $type ] ) ) : '';
200 - Fns::print_html( apply_filters( 'rtsb/columns/template/types/text', $the_type, $type, $post_id ) );
196 + $the_type = ! empty( $types[ $template_type ] ) ? '<b>' . esc_html( ucwords( $types[ $template_type ] ) ) . '</b>' : '';
197 + Fns::print_html( apply_filters( 'rtsb/columns/template/types/text', $the_type, $template_type, $post_id ) );
201 198 break;
202 199 case 'edit_with':
203 200 $edit_by = Fns::page_edit_with( $post_id );
204 201 echo esc_html( ucfirst( $edit_by ) );
@@ -203,20 +200,42 @@
203 200 $edit_by = Fns::page_edit_with( $post_id );
204 201 echo esc_html( ucfirst( $edit_by ) );
205 202 break;
206 203 case 'set_default':
207 - $is_set_default = absint( BuilderFns::builder_page_id_by_type( $type ) );
204 + $is_set_default = absint( BuilderFns::builder_page_id_by_type( $template_type ) );
208 205 $is_published = 'publish' === get_post_status( $post_id );
209 - $page_type_for = $type;
210 - if ( 'product' === $type ) {
211 - $product_ids = apply_filters( 'rtsb/product/page/builder/selected/products', [], $post_id );
212 - $set_default = BuilderFns::get_specific_product_as_default( $post_id );
213 - if ( ! empty( $product_ids ) && $set_default ) {
214 - $is_set_default = $post_id;
215 - $page_type_for = 'template-' . $post_id . '-specific-products';
206 + $page_type_for = $template_type;
207 + if ( 'product' === $template_type ) {
208 + $product_page_for = get_post_meta( $post_id, '_is_product_page_template_for', true );
209 + switch ( $product_page_for ) {
210 + case 'specific_products':
211 + $page_type_for = 'template-' . $post_id . '-specific-products';
212 + $set_default = BuilderFns::get_specific_product_as_default( $post_id );
213 + if ( $set_default ) {
214 + $is_set_default = $post_id;
215 + }
216 + break;
217 + case 'product_cats':
218 + $page_type_for = 'product-page-template-' . $post_id . '-specific-category';
219 + $set_default_option_name = BuilderFns::option_name_product_page_specific_cat_set_default( $post_id );
220 + $pp_cat_set_default = TemplateSettings::instance()->get_option( $set_default_option_name );
221 + if ( $pp_cat_set_default ) {
222 + $is_set_default = $post_id;
223 + }
224 + break;
225 + case 'product_tags':
226 + $page_type_for = 'product-page-template-' . $post_id . '-specific-tag';
227 + $set_default_option_name = BuilderFns::option_name_product_page_specific_tag_set_default( $post_id );
228 + $pp_tag_set_default = TemplateSettings::instance()->get_option( $set_default_option_name );
229 + if ( $pp_tag_set_default ) {
230 + $is_set_default = $post_id;
231 + }
232 + break;
233 + default:
234 + break;
216 235 }
217 - } elseif ( 'archive' === $type ) {
218 - $categories_name = apply_filters( 'rtsb/archive/page/builder/selected/categories', [], $post_id );
236 + } elseif ( 'archive' === $template_type ) {
237 + $categories_name = apply_filters( 'rtsb/template/builder/selected/categories', [], $post_id, $template_type );
219 238 $set_default = BuilderFns::get_specific_category_as_default( $post_id );
220 239 if ( ! empty( $categories_name ) && $set_default ) {
221 240 $is_set_default = $post_id;
222 241 $page_type_for = 'template-' . $post_id . '-specific-category';
@@ -224,10 +243,10 @@
224 243 }
225 244 ?>
226 245 <span class="rtsb-switch-wrapper page-type-<?php echo esc_attr( $page_type_for ); ?>" <?php echo ! $is_published ? 'style="pointer-events: none;"' : null; ?> title="<?php esc_html_e( 'Only publish post can set default ', 'shopbuilder' ); ?>">
227 246 <label class="rtsb-switch">
228 - <?php do_action( 'rtsb/set/default/column/extra/field', $post_id, $type, $is_set_default, $is_published ); ?>
229 - <div class="rtsb_template_type" data-template_type="<?php echo esc_attr( $type ); ?>" style='display:none;'></div>
247 + <?php do_action( 'rtsb/set/default/column/extra/field', $post_id, $template_type, $is_set_default, $is_published ); ?>
248 + <div class="rtsb_template_type" data-template_type="<?php echo esc_attr( $template_type ); ?>" style='display:none;'></div>
230 249 <input disabled="disabled" value="<?php echo absint( $post_id ); ?>" class="rtsb_set_default" name="set_default" type="checkbox" <?php echo esc_attr( $post_id === $is_set_default ? 'checked' : '' ); ?> >
231 250 <span class="rtsb-slider rtsb-round ">
232 251 <span class="rtsb-loader"></span>
233 252 </span>
@@ -310,9 +329,9 @@
310 329 * @return string
311 330 */
312 331 public function builder_template( $template ) {
313 332 $builder_page_id = BuilderFns::is_builder_preview() ? get_the_ID() : BuilderFns::builder_page_id_by_page();
314 - if ( $builder_page_id ) {
333 + if ( defined( 'ELEMENTOR_VERSION' ) && $builder_page_id ) { // Elementor Check.
315 334 $page_template = get_post_meta( $builder_page_id, '_wp_page_template', true );
316 335 $new_template = RTSB_ABSPATH . 'page-templates/builder-template.php';
317 336 if ( 'elementor_canvas' === $page_template ) {
318 337 $new_template = RTSB_ABSPATH . 'page-templates/elementor-canvas.php';
@@ -327,8 +346,25 @@
327 346 return $template;
328 347 }
329 348
330 349 /**
350 + * Restrict the preview access.
351 + *
352 + * @return void
353 + */
354 + public function restrict_preview_access() {
355 + if ( ! apply_filters( 'rtsb/builder/preview/access', true ) ) {
356 + return;
357 + }
358 +
359 + if ( is_singular( 'rtsb_builder' ) ) {
360 + if ( ! is_user_logged_in() ) {
361 + wp_safe_redirect( home_url() );
362 + }
363 + }
364 + }
365 +
366 + /**
331 367 * Add/Remove edit link in dashboard.
332 368 *
333 369 * Add or remove an edit link to the post/page action links on the post/pages list table.
334 370 *
@@ -343,20 +379,14 @@
343 379 public function filter_post_row_actions( $actions ) {
344 380 if ( $this->is_current_screen() ) {
345 381 // unset( $actions['view'] );
346 382 unset( $actions['inline hide-if-no-js'] );
383 +
384 + if ( isset( $actions['view'] ) ) {
385 + $actions['view'] = str_replace( __( 'View', 'shopbuilder' ), __( 'Preview', 'shopbuilder' ), $actions['view'] );
386 + }
347 387 }
348 388
349 389 return $actions;
350 390 }
351 391
352 - /**
353 - * Remove admin notices
354 - */
355 - public function remove_all_notices() {
356 - $screen = get_current_screen();
357 - if ( 'edit-rtsb_builder' === $screen->id ) {
358 - remove_all_actions( 'admin_notices' );
359 - remove_all_actions( 'all_admin_notices' );
360 - }
361 - }
362 392 }