abstracts
1 day ago
admin
1 week ago
ads
1 week ago
compatibility
1 week ago
crons
1 week ago
frontend
1 week ago
groups
1 day ago
importers
1 day ago
installation
1 year ago
interfaces
5 months ago
license
3 months ago
placements
1 week ago
rest
1 day ago
traits
1 week ago
utilities
1 week ago
cap_map.php
3 years ago
class-assets-registry.php
4 weeks ago
class-autoloader.php
1 week ago
class-cache-invalidator.php
1 week ago
class-constants.php
1 year ago
class-content-injector.php
4 weeks ago
class-entities.php
3 months ago
class-modal.php
1 year ago
class-modules.php
1 year ago
class-options.php
1 year ago
class-plugin.php
1 week ago
class-post-data.php
10 months ago
class-shortcodes.php
1 week ago
class-upgrades.php
1 day ago
class-widget.php
11 months ago
default-hooks.php
5 months ago
functions-ad.php
1 week ago
functions-components.php
3 months ago
functions-conditional.php
1 year ago
functions-core.php
1 year ago
functions-group.php
1 day ago
functions-placement.php
1 week ago
functions.php
1 week ago
index.php
2 years ago
load_modules.php
2 years ago
class-entities.php
251 lines
| 1 | <?php |
| 2 | /** |
| 3 | * The class handles the registration of custom post types and taxonomies in the plugin. |
| 4 | * |
| 5 | * @package AdvancedAds |
| 6 | * @author Advanced Ads <info@wpadvancedads.com> |
| 7 | * @since 1.47.0 |
| 8 | */ |
| 9 | |
| 10 | namespace AdvancedAds; |
| 11 | |
| 12 | use AdvancedAds\Framework\Interfaces\Integration_Interface; |
| 13 | |
| 14 | defined( 'ABSPATH' ) || exit; |
| 15 | |
| 16 | /** |
| 17 | * Entities. |
| 18 | */ |
| 19 | class Entities implements Integration_Interface { |
| 20 | |
| 21 | /** |
| 22 | * Hook into WordPress. |
| 23 | * |
| 24 | * @return void |
| 25 | */ |
| 26 | public function hooks(): void { |
| 27 | $this->register_ad_post_type(); |
| 28 | $this->register_placement_post_type(); |
| 29 | $this->register_group_taxonomy(); |
| 30 | } |
| 31 | |
| 32 | /** |
| 33 | * Register ad post type. |
| 34 | * |
| 35 | * @return void |
| 36 | */ |
| 37 | private function register_ad_post_type(): void { |
| 38 | // Early bail!! |
| 39 | if ( post_type_exists( Constants::POST_TYPE_AD ) ) { |
| 40 | return; |
| 41 | } |
| 42 | |
| 43 | $labels = [ |
| 44 | 'name' => __( 'Ads', 'advanced-ads' ), |
| 45 | 'singular_name' => __( 'Ad', 'advanced-ads' ), |
| 46 | 'add_new' => __( 'New Ad', 'advanced-ads' ), |
| 47 | 'add_new_item' => __( 'Add New Ad', 'advanced-ads' ), |
| 48 | 'edit' => __( 'Edit', 'advanced-ads' ), |
| 49 | 'edit_item' => __( 'Edit Ad', 'advanced-ads' ), |
| 50 | 'new_item' => __( 'New Ad', 'advanced-ads' ), |
| 51 | 'view' => __( 'View', 'advanced-ads' ), |
| 52 | 'view_item' => __( 'View the Ad', 'advanced-ads' ), |
| 53 | 'search_items' => __( 'Search Ads', 'advanced-ads' ), |
| 54 | 'not_found' => __( 'No Ads found', 'advanced-ads' ), |
| 55 | 'not_found_in_trash' => __( 'No Ads found in Trash', 'advanced-ads' ), |
| 56 | 'parent' => __( 'Parent Ad', 'advanced-ads' ), |
| 57 | ]; |
| 58 | |
| 59 | $supports = [ 'title', 'author' ]; |
| 60 | if ( defined( 'ADVANCED_ADS_ENABLE_REVISIONS' ) ) { |
| 61 | $supports[] = 'revisions'; |
| 62 | } |
| 63 | |
| 64 | $args = [ |
| 65 | 'labels' => $labels, |
| 66 | 'public' => false, |
| 67 | 'show_ui' => true, |
| 68 | 'show_in_rest' => true, |
| 69 | 'show_in_menu' => false, |
| 70 | 'hierarchical' => false, |
| 71 | 'capabilities' => [ |
| 72 | // Meta capabilities. |
| 73 | 'edit_post' => 'advanced_ads_edit_ads', |
| 74 | 'read_post' => 'advanced_ads_edit_ads', |
| 75 | 'delete_post' => 'advanced_ads_edit_ads', |
| 76 | 'edit_page' => 'advanced_ads_edit_ads', |
| 77 | 'read_page' => 'advanced_ads_edit_ads', |
| 78 | 'delete_page' => 'advanced_ads_edit_ads', |
| 79 | // Primitive capabilities used outside of map_meta_cap(). |
| 80 | 'edit_posts' => 'advanced_ads_edit_ads', |
| 81 | 'publish_posts' => 'advanced_ads_edit_ads', |
| 82 | 'read_private_posts' => 'advanced_ads_edit_ads', |
| 83 | // Primitive capabilities used within map_meta_cap(). |
| 84 | 'read' => 'advanced_ads_edit_ads', |
| 85 | 'delete_posts' => 'advanced_ads_edit_ads', |
| 86 | 'delete_private_posts' => 'advanced_ads_edit_ads', |
| 87 | 'delete_published_posts' => 'advanced_ads_edit_ads', |
| 88 | 'edit_private_posts' => 'advanced_ads_edit_ads', |
| 89 | 'edit_published_posts' => 'advanced_ads_edit_ads', |
| 90 | 'create_posts' => 'advanced_ads_edit_ads', |
| 91 | ], |
| 92 | 'has_archive' => false, |
| 93 | 'query_var' => false, |
| 94 | 'rewrite' => false, |
| 95 | 'supports' => $supports, |
| 96 | 'taxonomies' => [ Constants::TAXONOMY_GROUP ], |
| 97 | ]; |
| 98 | |
| 99 | register_post_type( |
| 100 | Constants::POST_TYPE_AD, |
| 101 | apply_filters( 'advanced-ads-post-type-ad', $args ) |
| 102 | ); |
| 103 | |
| 104 | register_post_status( |
| 105 | Constants::AD_STATUS_EXPIRED, |
| 106 | [ |
| 107 | 'label' => __( 'Expired', 'advanced-ads' ), |
| 108 | 'private' => true, |
| 109 | ] |
| 110 | ); |
| 111 | } |
| 112 | |
| 113 | /** |
| 114 | * Register placement post type. |
| 115 | * |
| 116 | * @return void |
| 117 | */ |
| 118 | private function register_placement_post_type(): void { |
| 119 | // Early bail!! |
| 120 | if ( post_type_exists( Constants::POST_TYPE_PLACEMENT ) ) { |
| 121 | return; |
| 122 | } |
| 123 | |
| 124 | $labels = [ |
| 125 | 'name' => __( 'Ad Placements', 'advanced-ads' ), |
| 126 | 'singular_name' => __( 'Ad Placement', 'advanced-ads' ), |
| 127 | 'add_new' => __( 'New Placement', 'advanced-ads' ), |
| 128 | 'add_new_item' => __( 'Add New Placement', 'advanced-ads' ), |
| 129 | 'edit' => __( 'Edit', 'advanced-ads' ), |
| 130 | 'edit_item' => __( 'Edit Placement', 'advanced-ads' ), |
| 131 | 'new_item' => __( 'New Placement', 'advanced-ads' ), |
| 132 | 'view' => __( 'View', 'advanced-ads' ), |
| 133 | 'view_item' => __( 'View the Ad Placement', 'advanced-ads' ), |
| 134 | 'search_items' => __( 'Search Placements', 'advanced-ads' ), |
| 135 | 'not_found' => __( 'No Ad Placements found', 'advanced-ads' ), |
| 136 | 'not_found_in_trash' => __( 'No Ad Placements found in Trash', 'advanced-ads' ), |
| 137 | ]; |
| 138 | |
| 139 | $args = [ |
| 140 | 'labels' => $labels, |
| 141 | 'description' => __( 'Placements are physically places in your theme and posts. You can use them if you plan to change ads and ad groups on the same place without the need to change your templates.', 'advanced-ads' ), |
| 142 | 'public' => false, |
| 143 | 'show_ui' => true, |
| 144 | 'show_in_rest' => true, |
| 145 | 'show_in_menu' => false, |
| 146 | 'hierarchical' => false, |
| 147 | 'capabilities' => [ |
| 148 | // Meta capabilities. |
| 149 | 'edit_post' => 'advanced_ads_manage_placements', |
| 150 | 'read_post' => 'advanced_ads_manage_placements', |
| 151 | 'delete_post' => 'advanced_ads_manage_placements', |
| 152 | 'edit_page' => 'advanced_ads_manage_placements', |
| 153 | 'read_page' => 'advanced_ads_manage_placements', |
| 154 | 'delete_page' => 'advanced_ads_manage_placements', |
| 155 | // Primitive capabilities used outside of map_meta_cap(). |
| 156 | 'edit_posts' => 'advanced_ads_manage_placements', |
| 157 | 'publish_posts' => 'advanced_ads_manage_placements', |
| 158 | 'read_private_posts' => 'advanced_ads_manage_placements', |
| 159 | // Primitive capabilities used within map_meta_cap(). |
| 160 | 'read' => 'advanced_ads_manage_placements', |
| 161 | 'delete_posts' => 'advanced_ads_manage_placements', |
| 162 | 'delete_private_posts' => 'advanced_ads_manage_placements', |
| 163 | 'delete_published_posts' => 'advanced_ads_manage_placements', |
| 164 | 'edit_private_posts' => 'advanced_ads_manage_placements', |
| 165 | 'edit_published_posts' => 'advanced_ads_manage_placements', |
| 166 | 'create_posts' => 'advanced_ads_manage_placements', |
| 167 | ], |
| 168 | 'has_archive' => false, |
| 169 | 'query_var' => false, |
| 170 | 'rewrite' => false, |
| 171 | 'supports' => [ 'title' ], |
| 172 | ]; |
| 173 | |
| 174 | register_post_type( |
| 175 | Constants::POST_TYPE_PLACEMENT, |
| 176 | apply_filters( 'advanced-ads-post-type-placement', $args ) |
| 177 | ); |
| 178 | } |
| 179 | |
| 180 | /** |
| 181 | * Register group taxonomy. |
| 182 | * |
| 183 | * @return void |
| 184 | */ |
| 185 | private function register_group_taxonomy(): void { |
| 186 | // Early bail!! |
| 187 | if ( taxonomy_exists( Constants::TAXONOMY_GROUP ) ) { |
| 188 | return; |
| 189 | } |
| 190 | |
| 191 | $labels = [ |
| 192 | 'name' => _x( 'Ad Groups & Rotations', 'ad group general name', 'advanced-ads' ), |
| 193 | 'singular_name' => _x( 'Ad Group', 'ad group singular name', 'advanced-ads' ), |
| 194 | 'search_items' => __( 'Search Groups', 'advanced-ads' ), |
| 195 | 'all_items' => __( 'All Ad Groups', 'advanced-ads' ), |
| 196 | 'parent_item' => __( 'Parent Ad Groups', 'advanced-ads' ), |
| 197 | 'parent_item_colon' => __( 'Parent Ad Groups:', 'advanced-ads' ), |
| 198 | 'edit_item' => __( 'Edit Ad Group', 'advanced-ads' ), |
| 199 | 'update_item' => __( 'Update Ad Group', 'advanced-ads' ), |
| 200 | 'add_new_item' => __( 'New Ad Group', 'advanced-ads' ), |
| 201 | 'new_item_name' => __( 'New Ad Groups Name', 'advanced-ads' ), |
| 202 | 'menu_name' => __( 'Groups', 'advanced-ads' ), |
| 203 | 'not_found' => __( 'No Ad Group found', 'advanced-ads' ), |
| 204 | ]; |
| 205 | |
| 206 | $args = [ |
| 207 | 'public' => false, |
| 208 | 'hierarchical' => true, |
| 209 | 'labels' => $labels, |
| 210 | 'show_ui' => true, |
| 211 | 'show_in_nav_menus' => false, |
| 212 | 'show_in_rest' => true, |
| 213 | 'show_in_menu' => false, |
| 214 | 'show_tagcloud' => false, |
| 215 | 'show_admin_column' => true, |
| 216 | 'query_var' => false, |
| 217 | 'rewrite' => false, |
| 218 | 'capabilities' => [ |
| 219 | 'manage_terms' => 'advanced_ads_edit_ads', |
| 220 | 'edit_terms' => 'advanced_ads_edit_ads', |
| 221 | 'delete_terms' => 'advanced_ads_edit_ads', |
| 222 | 'assign_terms' => 'advanced_ads_edit_ads', |
| 223 | ], |
| 224 | ]; |
| 225 | |
| 226 | register_taxonomy( |
| 227 | Constants::TAXONOMY_GROUP, |
| 228 | Constants::POST_TYPE_AD, |
| 229 | apply_filters( 'advanced-ads-group-taxonomy-params', $args ) |
| 230 | ); |
| 231 | } |
| 232 | |
| 233 | /** |
| 234 | * Placement description |
| 235 | * |
| 236 | * @return string |
| 237 | */ |
| 238 | public static function get_placement_description(): string { |
| 239 | return __( 'Placements are customizable ad spots on your site. Use them to see and change all the assigned ads and groups on this page. Furthermore, you can set up exclusive features like Cache Busting, Lazy Loading, AdBlocker fallbacks, or Parallax effects.', 'advanced-ads' ); |
| 240 | } |
| 241 | |
| 242 | /** |
| 243 | * Group description |
| 244 | * |
| 245 | * @return string |
| 246 | */ |
| 247 | public static function get_group_description(): string { |
| 248 | return __( 'Ad Groups are a flexible method to bundle ads. Use them to create ad rotations, run split tests, and organize your ads in the backend. An ad can belong to multiple ad groups.', 'advanced-ads' ); |
| 249 | } |
| 250 | } |
| 251 |