PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / 4.2.0
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution v4.2.0
4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 4.3.1 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.8.9 trunk 0.1.2-beta 0.1.3-beta 0.1.4-beta 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.8.0 1.8.1 1.9.0
shopengine / core / template-cpt.php
shopengine / core Last commit date
builders 3 years ago elementor-controls 3 years ago export-import 3 years ago multi-language 3 years ago onboard 3 years ago page-templates 3 years ago register 3 years ago sample-designs 3 years ago service-providers 3 years ago settings 3 years ago theme-support 3 years ago query-modifier.php 3 years ago service-provider-manager.php 3 years ago template-cpt.php 3 years ago
template-cpt.php
142 lines
1 <?php
2
3 namespace ShopEngine\Core;
4
5 use ShopEngine\Core\Builders\Action;
6 use ShopEngine\Traits\Singleton;
7
8 defined('ABSPATH') || exit;
9
10
11 class Template_Cpt {
12
13 const TYPE = 'shopengine-template';
14 const TEMPLATE_SECTION_ID = '#shopengine-templates';
15
16 use Singleton;
17
18
19 public function init() {
20 add_action('init', [$this, 'register_custom_post_types']);
21 add_action('admin_menu', [$this, 'cpt_menu'], 99);
22
23 add_filter('post_row_actions', [$this, 'filter_post_row_actions'], 20, 2);
24 }
25
26 public function cpt_menu() {
27 $link_our_new_cpt = 'edit.php?post_type=' . self::TYPE . self::TEMPLATE_SECTION_ID;
28 add_submenu_page(
29 'shopengine-settings',
30 esc_html__('Builder Templates', 'shopengine'),
31 esc_html__('Builder Templates', 'shopengine'),
32 'manage_options',
33 $link_our_new_cpt
34 );
35 }
36
37 public function register_custom_post_types() {
38
39 $labels = [
40 'name' => esc_html_x('Builder Templates', 'Post Type General Name', 'shopengine'),
41 'singular_name' => esc_html_x('Builder Template', 'Post Type Singular Name', 'shopengine'),
42 'menu_name' => esc_html__('Builder Template', 'shopengine'),
43 'name_admin_bar' => esc_html__('Builder Template', 'shopengine'),
44 'archives' => esc_html__('Template Archives', 'shopengine'),
45 'attributes' => esc_html__('Template Attributes', 'shopengine'),
46 'parent_item_colon' => esc_html__('Parent Item:', 'shopengine'),
47 'all_items' => esc_html__('Templates', 'shopengine'),
48 'add_new_item' => esc_html__('Add New Template', 'shopengine'),
49 'add_new' => esc_html__('Add New', 'shopengine'),
50 'new_item' => esc_html__('New Template', 'shopengine'),
51 'edit_item' => esc_html__('Edit Template', 'shopengine'),
52 'update_item' => esc_html__('Update Template', 'shopengine'),
53 'view_item' => esc_html__('View Template', 'shopengine'),
54 'view_items' => esc_html__('View Templates', 'shopengine'),
55 'search_items' => esc_html__('Search Templates', 'shopengine'),
56 'not_found' => esc_html__('Not found', 'shopengine'),
57 'not_found_in_trash' => esc_html__('Not found in Trash', 'shopengine'),
58 'featured_image' => esc_html__('Featured Image', 'shopengine'),
59 'set_featured_image' => esc_html__('Set featured image', 'shopengine'),
60 'remove_featured_image' => esc_html__('Remove featured image', 'shopengine'),
61 'use_featured_image' => esc_html__('Use as featured image', 'shopengine'),
62 'insert_into_item' => esc_html__('Insert into Template', 'shopengine'),
63 'uploaded_to_this_item' => esc_html__('Uploaded to this Template', 'shopengine'),
64 'items_list' => esc_html__('Templates list', 'shopengine'),
65 'items_list_navigation' => esc_html__('Templates list navigation', 'shopengine'),
66 'filter_items_list' => esc_html__('Filter from list', 'shopengine'),
67 ];
68
69 $rewrite = [
70 'slug' => 'shopengine-template',
71 'with_front' => true,
72 'pages' => false,
73 'feeds' => false,
74 ];
75
76 $args = [
77 'label' => esc_html__('Builder Templates', 'shopengine'),
78 'description' => esc_html__('ShopEngine Builder Template', 'shopengine'),
79 'labels' => $labels,
80 'supports' => ['title', 'editor', 'elementor', 'permalink'],
81 'hierarchical' => false,
82 'public' => true,
83 'show_ui' => true,
84 'show_in_menu' => false,
85 'show_in_admin_bar' => false,
86 'show_in_nav_menus' => false,
87 'can_export' => true,
88 'has_archive' => false,
89 'rewrite' => $rewrite,
90 'query_var' => true,
91 'exclude_from_search' => true,
92 'publicly_queryable' => true,
93 'capability_type' => 'page',
94 'show_in_rest' => true,
95 'rest_base' => self::TYPE,
96 ];
97
98 register_post_type(self::TYPE, $args);
99 }
100
101
102 public function filter_post_row_actions($actions, $post) {
103
104 if(Action::is_edit_with_gutenberg($post->ID)) {
105 $action = esc_html__("Edit With Gutenberg", "shopengine");
106
107 $actions['shopengine_edit_with_gutenberg'] = sprintf(
108 '<a title="' . $action . '" href="%1$s">%2$s</a>',
109 $this->get_edit_url($post->ID),
110 esc_html__('Edit with Gutenberg', 'shopengine')
111 );
112 }
113
114 //Check for Edit button in shopengine template list
115 if($post->post_type === self::TYPE && isset($actions['edit'])){
116 $actions['edit'] = sprintf(
117 '<a title="%1$s" aria-label="%1$s" data-url="%2$s" href="#">%1$s</a>',
118 esc_html__('Edit', 'shopengine'),
119 $this->get_edit_url($post->ID)
120 );
121 }
122
123 return $actions;
124 }
125
126 public function get_edit_url($pid) {
127
128 $url = add_query_arg(
129 [
130 'post' => $pid,
131 'action' => 'edit',
132 ],
133 admin_url('post.php')
134 );
135
136
137 $url = apply_filters('shopengine/cpt/template/urls/edit', $url, $pid, $this);
138
139 return $url;
140 }
141 }
142