Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/advanced.../admin/includes
File: class-meta-box.php
<?php
[0] Fix | Delete
// phpcs:ignoreFile
[1] Fix | Delete
[2] Fix | Delete
use AdvancedAds\Assets_Registry;
[3] Fix | Delete
use AdvancedAds\Entities;
[4] Fix | Delete
use AdvancedAds\Utilities\WordPress;
[5] Fix | Delete
[6] Fix | Delete
defined( 'ABSPATH' ) || exit;
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* Class Advanced_Ads_Admin_Meta_Boxes
[10] Fix | Delete
*/
[11] Fix | Delete
class Advanced_Ads_Admin_Meta_Boxes {
[12] Fix | Delete
/**
[13] Fix | Delete
* Instance of this class.
[14] Fix | Delete
*
[15] Fix | Delete
* @var object $instance
[16] Fix | Delete
*/
[17] Fix | Delete
protected static $instance = null;
[18] Fix | Delete
[19] Fix | Delete
/**
[20] Fix | Delete
* Meta box ids
[21] Fix | Delete
*
[22] Fix | Delete
* @var array $meta_box_ids
[23] Fix | Delete
*/
[24] Fix | Delete
protected $meta_box_ids = [];
[25] Fix | Delete
[26] Fix | Delete
/**
[27] Fix | Delete
* Advanced_Ads_Admin_Meta_Boxes constructor.
[28] Fix | Delete
*/
[29] Fix | Delete
private function __construct() {
[30] Fix | Delete
add_action( 'add_meta_boxes_' . Entities::POST_TYPE_AD, [ $this, 'add_meta_boxes' ] );
[31] Fix | Delete
// add meta box for post types edit pages.
[32] Fix | Delete
add_action( 'add_meta_boxes', [ $this, 'add_post_meta_box' ] );
[33] Fix | Delete
add_action( 'save_post', [ $this, 'save_post_meta_box' ] );
[34] Fix | Delete
// register dashboard widget.
[35] Fix | Delete
add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widget' ] );
[36] Fix | Delete
add_action( 'wp_dashboard_setup', [ $this, 'add_adsense_widget' ] );
[37] Fix | Delete
add_action( 'admin_enqueue_scripts', [ $this, 'adsense_widget_js' ] );
[38] Fix | Delete
// fixes compatibility issue with WP QUADS PRO.
[39] Fix | Delete
add_action( 'quads_meta_box_post_types', [ $this, 'fix_wpquadspro_issue' ], 11 );
[40] Fix | Delete
}
[41] Fix | Delete
[42] Fix | Delete
public function add_adsense_widget() {
[43] Fix | Delete
if ( Advanced_Ads_AdSense_Data::get_instance()->is_setup()
[44] Fix | Delete
&& ! Advanced_Ads_AdSense_Data::get_instance()->is_hide_stats()
[45] Fix | Delete
&& isset ( Advanced_Ads::get_instance()->get_adsense_options()['adsense-wp-widget'] ) ) {
[46] Fix | Delete
wp_add_dashboard_widget(
[47] Fix | Delete
'custom_dashboard_widget',
[48] Fix | Delete
__( 'AdSense Earnings', 'advanced-ads' ),
[49] Fix | Delete
[ $this, 'adsense_widget_content' ],
[50] Fix | Delete
null,
[51] Fix | Delete
null,
[52] Fix | Delete
'side'
[53] Fix | Delete
);
[54] Fix | Delete
}
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
public function adsense_widget_content() {
[58] Fix | Delete
Advanced_Ads_Overview_Widgets_Callbacks::add_meta_box(
[59] Fix | Delete
'advads_overview_adsense_stats',
[60] Fix | Delete
'',
[61] Fix | Delete
'full',
[62] Fix | Delete
'render_adsense_stats'
[63] Fix | Delete
);
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
public function adsense_widget_js() {
[67] Fix | Delete
global $pagenow;
[68] Fix | Delete
[69] Fix | Delete
if ( 'index.php' === $pagenow ) {
[70] Fix | Delete
Assets_Registry::enqueue_script( 'wp-widget-adsense' );
[71] Fix | Delete
}
[72] Fix | Delete
}
[73] Fix | Delete
[74] Fix | Delete
/**
[75] Fix | Delete
* Return an instance of this class.
[76] Fix | Delete
*
[77] Fix | Delete
* @return object A single instance of this class.
[78] Fix | Delete
*/
[79] Fix | Delete
public static function get_instance() {
[80] Fix | Delete
// If the single instance hasn't been set, set it now.
[81] Fix | Delete
if ( null === self::$instance ) {
[82] Fix | Delete
self::$instance = new self();
[83] Fix | Delete
}
[84] Fix | Delete
[85] Fix | Delete
return self::$instance;
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
/**
[89] Fix | Delete
* Add meta boxes
[90] Fix | Delete
*
[91] Fix | Delete
* @since 1.0.0
[92] Fix | Delete
*/
[93] Fix | Delete
public function add_meta_boxes() {
[94] Fix | Delete
global $post;
[95] Fix | Delete
$post_type = Entities::POST_TYPE_AD;
[96] Fix | Delete
[97] Fix | Delete
add_meta_box(
[98] Fix | Delete
'ad-main-box',
[99] Fix | Delete
__( 'Ad Type', 'advanced-ads' ),
[100] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[101] Fix | Delete
$post_type,
[102] Fix | Delete
'normal',
[103] Fix | Delete
'high'
[104] Fix | Delete
);
[105] Fix | Delete
if (
[106] Fix | Delete
$post->ID
[107] Fix | Delete
&& Advanced_Ads_AdSense_Data::get_instance()->is_setup()
[108] Fix | Delete
&& ! Advanced_Ads_AdSense_Data::get_instance()->is_hide_stats()
[109] Fix | Delete
) {
[110] Fix | Delete
$ad_unit = Advanced_Ads_Network_Adsense::get_instance()->get_ad_unit( $post->ID );
[111] Fix | Delete
[112] Fix | Delete
if ( $ad_unit ) {
[113] Fix | Delete
add_meta_box(
[114] Fix | Delete
'advads-gadsense-box',
[115] Fix | Delete
sprintf(
[116] Fix | Delete
/* translators: 1: Name of ad unit */
[117] Fix | Delete
esc_html__( 'Earnings of %1$s', 'advanced-ads' ),
[118] Fix | Delete
esc_html( $ad_unit->name )
[119] Fix | Delete
),
[120] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[121] Fix | Delete
$post_type,
[122] Fix | Delete
'normal',
[123] Fix | Delete
'high'
[124] Fix | Delete
);
[125] Fix | Delete
}
[126] Fix | Delete
}
[127] Fix | Delete
[128] Fix | Delete
// use dynamic filter from to add close class to ad type meta box after saved first time.
[129] Fix | Delete
add_filter( 'postbox_classes_advanced_ads_ad-main-box', [ $this, 'close_ad_type_metabox' ] );
[130] Fix | Delete
[131] Fix | Delete
// show the Usage box for saved ads
[132] Fix | Delete
if ( $post->filter === 'edit' ) {
[133] Fix | Delete
add_meta_box(
[134] Fix | Delete
'ad-usage-box',
[135] Fix | Delete
__( 'Usage', 'advanced-ads' ),
[136] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[137] Fix | Delete
$post_type,
[138] Fix | Delete
'normal',
[139] Fix | Delete
'high'
[140] Fix | Delete
);
[141] Fix | Delete
}
[142] Fix | Delete
add_meta_box(
[143] Fix | Delete
'ad-parameters-box',
[144] Fix | Delete
__( 'Ad Parameters', 'advanced-ads' ),
[145] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[146] Fix | Delete
$post_type,
[147] Fix | Delete
'normal',
[148] Fix | Delete
'high'
[149] Fix | Delete
);
[150] Fix | Delete
add_meta_box(
[151] Fix | Delete
'ad-output-box',
[152] Fix | Delete
__( 'Layout / Output', 'advanced-ads' ),
[153] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[154] Fix | Delete
$post_type,
[155] Fix | Delete
'normal',
[156] Fix | Delete
'high'
[157] Fix | Delete
);
[158] Fix | Delete
add_meta_box(
[159] Fix | Delete
'ad-targeting-box',
[160] Fix | Delete
__( 'Targeting', 'advanced-ads' ),
[161] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[162] Fix | Delete
$post_type,
[163] Fix | Delete
'normal',
[164] Fix | Delete
'default'
[165] Fix | Delete
);
[166] Fix | Delete
if ( ! defined( 'AAP_VERSION' ) ) {
[167] Fix | Delete
add_meta_box(
[168] Fix | Delete
'advads-pro-pitch',
[169] Fix | Delete
__( 'Increase your ad revenue', 'advanced-ads' ),
[170] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[171] Fix | Delete
$post_type,
[172] Fix | Delete
'side',
[173] Fix | Delete
'low'
[174] Fix | Delete
);
[175] Fix | Delete
}
[176] Fix | Delete
if ( ! defined( 'AAT_VERSION' ) ) {
[177] Fix | Delete
add_meta_box(
[178] Fix | Delete
'advads-tracking-pitch',
[179] Fix | Delete
__( 'Statistics', 'advanced-ads' ),
[180] Fix | Delete
[ $this, 'markup_meta_boxes' ],
[181] Fix | Delete
$post_type,
[182] Fix | Delete
'normal',
[183] Fix | Delete
'low'
[184] Fix | Delete
);
[185] Fix | Delete
}
[186] Fix | Delete
[187] Fix | Delete
// register meta box ids.
[188] Fix | Delete
$this->meta_box_ids = [
[189] Fix | Delete
'ad-main-box',
[190] Fix | Delete
'advads-gadsense-box',
[191] Fix | Delete
'ad-parameters-box',
[192] Fix | Delete
'ad-output-box',
[193] Fix | Delete
'ad-targeting-box',
[194] Fix | Delete
'advads-pro-pitch',
[195] Fix | Delete
'advads-tracking-pitch',
[196] Fix | Delete
'revisionsdiv', // revisions – only when activated.
[197] Fix | Delete
'advanced_ads_groupsdiv', // automatically added by ad groups taxonomy.
[198] Fix | Delete
];
[199] Fix | Delete
[200] Fix | Delete
// force AA meta boxes to never be completely hidden by screen options.
[201] Fix | Delete
add_filter( 'hidden_meta_boxes', [ $this, 'unhide_meta_boxes' ], 10, 2 );
[202] Fix | Delete
// hide the checkboxes for "unhideable" meta boxes within screen options via CSS.
[203] Fix | Delete
add_action( 'admin_head', [ $this, 'unhide_meta_boxes_style' ] );
[204] Fix | Delete
[205] Fix | Delete
$whitelist = apply_filters(
[206] Fix | Delete
'advanced-ads-ad-edit-allowed-metaboxes',
[207] Fix | Delete
array_merge(
[208] Fix | Delete
$this->meta_box_ids,
[209] Fix | Delete
[ // meta boxes in this array can be hidden using Screen Option
[210] Fix | Delete
'submitdiv',
[211] Fix | Delete
'slugdiv',
[212] Fix | Delete
'ad-usage-box',
[213] Fix | Delete
'authordiv',
[214] Fix | Delete
'tracking-ads-box',
[215] Fix | Delete
'ad-layer-ads-box', // deprecated.
[216] Fix | Delete
]
[217] Fix | Delete
)
[218] Fix | Delete
);
[219] Fix | Delete
[220] Fix | Delete
global $wp_meta_boxes;
[221] Fix | Delete
// remove non-white-listed meta boxes.
[222] Fix | Delete
foreach ( [ 'normal', 'advanced', 'side' ] as $context ) {
[223] Fix | Delete
if ( isset( $wp_meta_boxes[ $post_type ][ $context ] ) ) {
[224] Fix | Delete
foreach ( [ 'high', 'sorted', 'core', 'default', 'low' ] as $priority ) {
[225] Fix | Delete
if ( isset( $wp_meta_boxes[ $post_type ][ $context ][ $priority ] ) ) {
[226] Fix | Delete
foreach ( (array) $wp_meta_boxes[ $post_type ][ $context ][ $priority ] as $id => $box ) {
[227] Fix | Delete
if ( ! in_array( $id, $whitelist ) ) {
[228] Fix | Delete
unset( $wp_meta_boxes[ $post_type ][ $context ][ $priority ][ $id ] );
[229] Fix | Delete
}
[230] Fix | Delete
}
[231] Fix | Delete
}
[232] Fix | Delete
}
[233] Fix | Delete
}
[234] Fix | Delete
}
[235] Fix | Delete
}
[236] Fix | Delete
[237] Fix | Delete
/**
[238] Fix | Delete
* Load templates for all meta boxes
[239] Fix | Delete
*
[240] Fix | Delete
* @param WP_Post $post WP_Post object.
[241] Fix | Delete
* @param array $box meta box information.
[242] Fix | Delete
* @todo move ad initialization to main function and just global it
[243] Fix | Delete
*/
[244] Fix | Delete
public function markup_meta_boxes( $post, $box ) {
[245] Fix | Delete
$ad = \Advanced_Ads\Ad_Repository::get( $post->ID );
[246] Fix | Delete
[247] Fix | Delete
switch ( $box['id'] ) {
[248] Fix | Delete
case 'ad-main-box':
[249] Fix | Delete
$view = 'ad-main-metabox.php';
[250] Fix | Delete
$hndlelinks = '<a href="https://wpadvancedads.com/manual/ad-types?utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-ad-type" target="_blank" class="advads-manual-link">' . __( 'Manual', 'advanced-ads' ) . '</a>';
[251] Fix | Delete
break;
[252] Fix | Delete
case 'ad-usage-box':
[253] Fix | Delete
$view = 'ad-usage-metabox.php';
[254] Fix | Delete
break;
[255] Fix | Delete
case 'ad-parameters-box':
[256] Fix | Delete
$view = 'ad-parameters-metabox.php';
[257] Fix | Delete
break;
[258] Fix | Delete
case 'ad-output-box':
[259] Fix | Delete
$positioning = ( new Advanced_Ads_Ad_Positioning( $ad ) )->return_admin_view();
[260] Fix | Delete
$wrapper_id = $ad->options( 'output.wrapper-id', '' );
[261] Fix | Delete
$wrapper_class = $ad->options( 'output.wrapper-class', '' );
[262] Fix | Delete
$debug_mode_enabled = (bool) $ad->options( 'output.debugmode', false );
[263] Fix | Delete
$view = 'ad-output-metabox.php';
[264] Fix | Delete
$hndlelinks = '<a href="https://wpadvancedads.com/manual/optimizing-the-ad-layout/?utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-ad-layout" target="_blank" class="advads-manual-link">' . __( 'Manual', 'advanced-ads' ) . '</a>';
[265] Fix | Delete
break;
[266] Fix | Delete
case 'ad-targeting-box':
[267] Fix | Delete
$view = 'conditions/ad-targeting-metabox.php';
[268] Fix | Delete
$hndlelinks = '<a href="#" class="advads-video-link">' . __( 'Video', 'advanced-ads' ) . '</a>';
[269] Fix | Delete
$hndlelinks .= '<a href="https://wpadvancedads.com/manual/display-conditions/?utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-display" target="_blank" class="advads-manual-link">' . __( 'Display Conditions', 'advanced-ads' ) . '</a>';
[270] Fix | Delete
$hndlelinks .= '<a href="https://wpadvancedads.com/manual/visitor-conditions/?utm_source=advanced-ads&utm_medium=link&utm_campaign=edit-visitor" target="_blank" class="advads-manual-link">' . __( 'Visitor Conditions', 'advanced-ads' ) . '</a>';
[271] Fix | Delete
$videomarkup = '<iframe width="420" height="315" src="https://www.youtube-nocookie.com/embed/VjfrRl5Qn4I?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>';
[272] Fix | Delete
$ad_options = $ad->options();
[273] Fix | Delete
$display_conditions = is_array( $ad_options['conditions'] ) ? $ad_options['conditions'] : []; // default value for older version is `""` (empty string)
[274] Fix | Delete
$visitor_conditions = is_array( $ad_options['visitors'] ) ? $ad_options['visitors'] : []; // default value for older version is `""` (empty string)
[275] Fix | Delete
$display_conditions_available = ( empty( $display_conditions ) );
[276] Fix | Delete
$visitor_conditions_available = ( empty( $visitor_conditions ) );
[277] Fix | Delete
break;
[278] Fix | Delete
case 'advads-pro-pitch':
[279] Fix | Delete
$view = 'upgrades/all-access.php';
[280] Fix | Delete
break;
[281] Fix | Delete
case 'advads-tracking-pitch':
[282] Fix | Delete
$view = 'upgrades/tracking.php';
[283] Fix | Delete
break;
[284] Fix | Delete
case 'advads-gadsense-box':
[285] Fix | Delete
$unit_code = null;
[286] Fix | Delete
if ( $ad && isset( $ad->type ) && 'adsense' === $ad->type ) {
[287] Fix | Delete
if ( isset( $ad->content ) ) {
[288] Fix | Delete
$json_content = json_decode( $ad->content );
[289] Fix | Delete
// phpcs:ignore
[290] Fix | Delete
if ( isset( $json_content->slotId ) ) {
[291] Fix | Delete
// phpcs:ignore
[292] Fix | Delete
$unit_code = $json_content->slotId;
[293] Fix | Delete
}
[294] Fix | Delete
}
[295] Fix | Delete
}
[296] Fix | Delete
[297] Fix | Delete
$report_type = 'unit';
[298] Fix | Delete
$report_filter = $unit_code;
[299] Fix | Delete
$advads_gadsense_options['hidden'] = ! $unit_code;
[300] Fix | Delete
$view = 'gadsense-dashboard.php';
[301] Fix | Delete
$pub_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
[302] Fix | Delete
$hndlelinks = '<a href="' . esc_url( admin_url( 'admin.php?page=advanced-ads-settings#top#adsense' ) ) . '" target="_blank">' . __( 'Disable', 'advanced-ads' ) . '</a>';
[303] Fix | Delete
break;
[304] Fix | Delete
}
[305] Fix | Delete
[306] Fix | Delete
if ( ! isset( $view ) ) {
[307] Fix | Delete
return;
[308] Fix | Delete
}
[309] Fix | Delete
// markup moved to handle headline of the metabox.
[310] Fix | Delete
if ( isset( $hndlelinks ) ) {
[311] Fix | Delete
?><span class="advads-hndlelinks hidden">
[312] Fix | Delete
<?php
[313] Fix | Delete
echo wp_kses(
[314] Fix | Delete
$hndlelinks,
[315] Fix | Delete
[
[316] Fix | Delete
'a' => [
[317] Fix | Delete
'target' => [],
[318] Fix | Delete
'href' => [],
[319] Fix | Delete
'class' => [],
[320] Fix | Delete
],
[321] Fix | Delete
]
[322] Fix | Delete
);
[323] Fix | Delete
?>
[324] Fix | Delete
</span>
[325] Fix | Delete
<?php
[326] Fix | Delete
}
[327] Fix | Delete
// show video markup.
[328] Fix | Delete
if ( isset( $videomarkup ) ) {
[329] Fix | Delete
echo '<div class="advads-video-link-container" data-videolink=\'' . wp_kses(
[330] Fix | Delete
$videomarkup,
[331] Fix | Delete
[
[332] Fix | Delete
'iframe' => [
[333] Fix | Delete
'width' => [],
[334] Fix | Delete
'height' => [],
[335] Fix | Delete
'src' => [],
[336] Fix | Delete
'frameborder' => [],
[337] Fix | Delete
'allowfullscreen' => [],
[338] Fix | Delete
],
[339] Fix | Delete
]
[340] Fix | Delete
) . '\'></div>';
[341] Fix | Delete
}
[342] Fix | Delete
/**
[343] Fix | Delete
* List general notices
[344] Fix | Delete
* elements in $warnings contain [text] and [class] attributes.
[345] Fix | Delete
*/
[346] Fix | Delete
$warnings = [];
[347] Fix | Delete
// show warning if ad contains https in parameters box.
[348] Fix | Delete
$https_message = Advanced_Ads_Ad_Debug::is_https_and_http( $ad );
[349] Fix | Delete
if ( 'ad-parameters-box' === $box['id'] && $https_message ) {
[350] Fix | Delete
$warnings[] = [
[351] Fix | Delete
'text' => $https_message,
[352] Fix | Delete
'class' => 'advads-ad-notice-https-missing advads-notice-inline advads-error',
[353] Fix | Delete
];
[354] Fix | Delete
}
[355] Fix | Delete
[356] Fix | Delete
if ( 'ad-parameters-box' === $box['id'] ) {
[357] Fix | Delete
$warnings[] = [
[358] Fix | Delete
'text' => Advanced_Ads_AdSense_Admin::get_auto_ads_messages()[ Advanced_Ads_AdSense_Data::get_instance()->is_page_level_enabled() ? 'enabled' : 'disabled' ],
[359] Fix | Delete
'class' => 'advads-auto-ad-in-ad-content hidden advads-notice-inline advads-error',
[360] Fix | Delete
];
[361] Fix | Delete
}
[362] Fix | Delete
[363] Fix | Delete
// Let users know that they could use the Google AdSense ad type when they enter an AdSense code.
[364] Fix | Delete
if ( 'ad-parameters-box' === $box['id'] && Advanced_Ads_Ad_Type_Adsense::content_is_adsense( $ad->content ) && in_array( $ad->type, [ 'plain', 'content' ], true ) ) {
[365] Fix | Delete
if (
[366] Fix | Delete
false === strpos( $ad->content, 'enable_page_level_ads' )
[367] Fix | Delete
&& ! preg_match( '/script[^>]+data-ad-client=/', $ad->content )
[368] Fix | Delete
) {
[369] Fix | Delete
$adsense_auto_ads = Advanced_Ads_AdSense_Data::get_instance()->is_page_level_enabled();
[370] Fix | Delete
$warnings[] = [
[371] Fix | Delete
'class' => 'advads-adsense-found-in-content advads-notice-inline advads-error',
[372] Fix | Delete
'text' => sprintf(
[373] Fix | Delete
// translators: %1$s opening button tag, %2$s closing button tag.
[374] Fix | Delete
esc_html__( 'This looks like an AdSense ad. Switch the ad type to “AdSense ad” to make use of more features. %1$sSwitch to AdSense ad%2$s.', 'advanced' ),
[375] Fix | Delete
'<button class="button-secondary" id="switch-to-adsense-type">',
[376] Fix | Delete
'</button>'
[377] Fix | Delete
),
[378] Fix | Delete
];
[379] Fix | Delete
}
[380] Fix | Delete
}
[381] Fix | Delete
[382] Fix | Delete
$warnings = apply_filters( 'advanced-ads-ad-notices', $warnings, $box, $post );
[383] Fix | Delete
echo '<ul id="' . esc_attr( $box['id'] ) . '-notices" class="advads-metabox-notices">';
[384] Fix | Delete
foreach ( $warnings as $_warning ) {
[385] Fix | Delete
if ( isset( $_warning['text'] ) ) :
[386] Fix | Delete
$warning_class = isset( $_warning['class'] ) ? $_warning['class'] : '';
[387] Fix | Delete
echo '<li class="' . esc_attr( $warning_class ) . '">';
[388] Fix | Delete
// skip CodeSniffer because this could be complex HTML.
[389] Fix | Delete
// phpcs:ignore
[390] Fix | Delete
echo $_warning['text'];
[391] Fix | Delete
echo '</li>';
[392] Fix | Delete
endif;
[393] Fix | Delete
}
[394] Fix | Delete
echo '</ul>';
[395] Fix | Delete
include ADVADS_ABSPATH . 'admin/views/' . $view;
[396] Fix | Delete
}
[397] Fix | Delete
[398] Fix | Delete
/**
[399] Fix | Delete
* Force all AA related meta boxes to stay visible
[400] Fix | Delete
*
[401] Fix | Delete
* @param array $hidden An array of hidden meta boxes.
[402] Fix | Delete
* @param WP_Screen $screen WP_Screen object of the current screen.
[403] Fix | Delete
*
[404] Fix | Delete
* @return array
[405] Fix | Delete
*/
[406] Fix | Delete
public function unhide_meta_boxes( $hidden, $screen ) {
[407] Fix | Delete
// only check on Advanced Ads edit screen.
[408] Fix | Delete
if ( ! isset( $screen->id ) || 'advanced_ads' !== $screen->id || ! is_array( $this->meta_box_ids ) ) {
[409] Fix | Delete
return $hidden;
[410] Fix | Delete
}
[411] Fix | Delete
[412] Fix | Delete
// return only hidden elements which are not among the Advanced Ads meta box ids.
[413] Fix | Delete
return array_diff( $hidden, (array) apply_filters( 'advanced-ads-unhide-meta-boxes', $this->meta_box_ids ) );
[414] Fix | Delete
}
[415] Fix | Delete
[416] Fix | Delete
/**
[417] Fix | Delete
* Add dynamic CSS for un-hideable meta boxes.
[418] Fix | Delete
*/
[419] Fix | Delete
public function unhide_meta_boxes_style() {
[420] Fix | Delete
$screen = get_current_screen();
[421] Fix | Delete
if ( empty( $screen ) || ! isset( $screen->id ) || 'advanced_ads' !== $screen->id ) {
[422] Fix | Delete
return;
[423] Fix | Delete
}
[424] Fix | Delete
[425] Fix | Delete
$meta_boxes = (array) apply_filters( 'advanced-ads-unhide-meta-boxes', $this->meta_box_ids );
[426] Fix | Delete
if ( empty( $meta_boxes ) ) {
[427] Fix | Delete
return;
[428] Fix | Delete
}
[429] Fix | Delete
[430] Fix | Delete
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- we don't need to escape the string we just concatenated.
[431] Fix | Delete
printf( '<style>%s {display: none;}</style>', implode( ', ', array_reduce( $meta_boxes, function( $styles, $box_id ) {
[432] Fix | Delete
$styles[] = sprintf( 'label[for="%s-hide"]', $box_id );
[433] Fix | Delete
[434] Fix | Delete
return $styles;
[435] Fix | Delete
}, [] ) ) );
[436] Fix | Delete
}
[437] Fix | Delete
[438] Fix | Delete
/**
[439] Fix | Delete
* Add a meta box to post type edit screens with ad settings
[440] Fix | Delete
*
[441] Fix | Delete
* @param string $post_type current post type.
[442] Fix | Delete
*/
[443] Fix | Delete
public function add_post_meta_box( $post_type = '' ) {
[444] Fix | Delete
// don’t display for non admins.
[445] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_edit_ads' ) ) {
[446] Fix | Delete
return;
[447] Fix | Delete
}
[448] Fix | Delete
[449] Fix | Delete
// get public post types.
[450] Fix | Delete
$public_post_types = get_post_types(
[451] Fix | Delete
[
[452] Fix | Delete
'public' => true,
[453] Fix | Delete
'publicly_queryable' => true,
[454] Fix | Delete
],
[455] Fix | Delete
'names',
[456] Fix | Delete
'or'
[457] Fix | Delete
);
[458] Fix | Delete
[459] Fix | Delete
// limit meta box to public post types.
[460] Fix | Delete
if ( in_array( $post_type, $public_post_types ) ) {
[461] Fix | Delete
$disabled_post_types = Advanced_Ads::get_instance()->options()['pro']['general']['disable-by-post-types'] ?? [];
[462] Fix | Delete
add_meta_box(
[463] Fix | Delete
'advads-ad-settings',
[464] Fix | Delete
__( 'Ad Settings', 'advanced-ads' ),
[465] Fix | Delete
[ $this, in_array( $post_type, $disabled_post_types, true ) ? 'render_disable_post_type_notice' : 'render_post_meta_box' ],
[466] Fix | Delete
$post_type,
[467] Fix | Delete
'side',
[468] Fix | Delete
'low'
[469] Fix | Delete
);
[470] Fix | Delete
}
[471] Fix | Delete
}
[472] Fix | Delete
[473] Fix | Delete
/**
[474] Fix | Delete
* Render meta box for ad settings on a per post basis
[475] Fix | Delete
*
[476] Fix | Delete
* @param WP_Post $post The post object.
[477] Fix | Delete
*/
[478] Fix | Delete
public function render_post_meta_box( $post ) {
[479] Fix | Delete
[480] Fix | Delete
// nonce field to check when we save the values.
[481] Fix | Delete
wp_nonce_field( 'advads_post_meta_box', 'advads_post_meta_box_nonce' );
[482] Fix | Delete
[483] Fix | Delete
// retrieve an existing value from the database.
[484] Fix | Delete
$values = get_post_meta( $post->ID, '_advads_ad_settings', true );
[485] Fix | Delete
[486] Fix | Delete
// load the view.
[487] Fix | Delete
include ADVADS_ABSPATH . 'admin/views/post-ad-settings-metabox.php';
[488] Fix | Delete
[489] Fix | Delete
do_action( 'advanced_ads_render_post_meta_box', $post, $values );
[490] Fix | Delete
}
[491] Fix | Delete
[492] Fix | Delete
/**
[493] Fix | Delete
* Save the ad meta when the post is saved.
[494] Fix | Delete
*
[495] Fix | Delete
* @param int $post_id The ID of the post being saved.
[496] Fix | Delete
*
[497] Fix | Delete
* @return mixed empty or post ID.
[498] Fix | Delete
*/
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function