PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / includes / admin / pages / class-placements.php
advanced-ads / includes / admin / pages Last commit date
class-ads-editing.php 3 months ago class-ads.php 3 months ago class-dashboard.php 3 months ago class-groups.php 3 months ago class-onboarding.php 3 months ago class-placements.php 3 months ago class-settings.php 3 months ago class-support.php 3 months ago class-tools.php 3 months ago
class-placements.php
169 lines
1 <?php
2 /**
3 * Placements screen.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.47.0
8 */
9
10 namespace AdvancedAds\Admin\Pages;
11
12 use WP_Screen;
13 use AdvancedAds\Constants;
14 use AdvancedAds\Abstracts\Screen;
15 use AdvancedAds\Utilities\Conditional;
16 use AdvancedAds\Admin\Placements\List_Table;
17 use AdvancedAds\Admin\Placements\Create_Modal;
18
19 defined( 'ABSPATH' ) || exit;
20
21 /**
22 * Placements.
23 */
24 class Placements extends Screen {
25
26 /**
27 * Screen unique id.
28 *
29 * @return string
30 */
31 public function get_id(): string {
32 return 'placements';
33 }
34
35 /**
36 * Register screen into WordPress admin area.
37 *
38 * @return void
39 */
40 public function register_screen(): void {
41 add_submenu_page(
42 ADVADS_SLUG,
43 __( 'Ad Placements', 'advanced-ads' ),
44 __( 'Placements', 'advanced-ads' ),
45 Conditional::user_cap( 'advanced_ads_manage_placements' ),
46 'edit.php?post_type=' . Constants::POST_TYPE_PLACEMENT
47 );
48
49 // Keep the manual placements page around, but redirect it to the custom post type.
50 $old_placements_hook = add_submenu_page(
51 '',
52 '',
53 '',
54 Conditional::user_cap( 'advanced_ads_manage_placements' ),
55 ADVADS_SLUG . '-placements',
56 '__return_true'
57 );
58 $this->set_hook( 'edit-' . Constants::POST_TYPE_PLACEMENT );
59 add_action( 'current_screen', [ $this, 'load_placement_ui' ] );
60 add_action( 'load-' . $old_placements_hook, [ $this, 'redirect_to_post_type' ] );
61 }
62
63 /**
64 * Enqueue assets
65 *
66 * @return void
67 */
68 public function enqueue_assets(): void {
69 wp_advads()->registry->enqueue_style( 'screen-placements-listing' );
70 wp_advads()->registry->enqueue_script( 'screen-placements-listing' );
71
72 wp_advads_json_add(
73 'placements',
74 [
75 'updateItemNonce' => wp_create_nonce( 'placement-update-item'),
76 'pickerUrl' => $this->get_placement_picker_url(),
77 ]
78 );
79
80 // Localize texts.
81 $i18n = [
82 'placements' => [
83 'created' => __( 'New placement created', 'advanced-ads' ),
84 'updated' => __( 'Placement updated', 'advanced-ads' ),
85 'closeSave' => __( 'Close and save', 'advanced-ads' ),
86 'saveNew' => __( 'Save new placement', 'advanced-ads' ),
87 'draft' => __( 'Draft', 'advanced-ads' ),
88 ],
89 ];
90 wp_advads_json_add( 'i18n', $i18n );
91 }
92
93 /**
94 * Redirect old placement page to custom post type.
95 *
96 * @return void
97 */
98 public function redirect_to_post_type(): void {
99 wp_safe_redirect( 'edit.php?post_type=' . Constants::POST_TYPE_PLACEMENT );
100 }
101
102 /**
103 * Load list table
104 *
105 * @param WP_Screen $screen Current screen instance.
106 *
107 * @return void
108 */
109 public function load_placement_ui( WP_Screen $screen ): void {
110 if ( 'edit-' . Constants::POST_TYPE_PLACEMENT === $screen->id ) {
111 ( new List_Table() )->hooks();
112 ( new Create_Modal() )->hooks();
113 }
114 }
115
116 /**
117 * Get page header arguments
118 *
119 * @return array
120 */
121 public function define_header_args(): array {
122 return [
123 'title' => __( 'Your Placements', 'advanced-ads' ),
124 'breadcrumb_title' => __( 'Placements', 'advanced-ads' ),
125 'manual_url' => 'https://wpadvancedads.com/manual/placements/',
126 ];
127 }
128
129 /**
130 * Add actions to the header
131 *
132 * @return void
133 */
134 public function header_actions(): void {
135 ?>
136 <a href="#modal-placement-new" data-dialog="modal-placement-new" class="button button-primary advads-button">
137 <span class="dashicons dashicons-plus -ml-1.5 leading-6"></span>
138 <span><?php esc_html_e( 'New Placement', 'advanced-ads' ); ?></span>
139 </a>
140 <?php
141 }
142
143 /**
144 * Get the URL where the user is redirected after activating the frontend picker for a "Content" placement.
145 *
146 * @return string
147 */
148 private function get_placement_picker_url() {
149 $location = false;
150
151 if ( get_option( 'show_on_front' ) === 'posts' ) {
152 $recent_posts = wp_get_recent_posts(
153 [
154 'numberposts' => 1,
155 'post_type' => 'post',
156 'post_status' => 'publish',
157 ],
158 'OBJECT'
159 );
160
161 if ( $recent_posts ) {
162 $location = get_permalink( $recent_posts[0] );
163 }
164 }
165
166 return $location ?? home_url();
167 }
168 }
169