| 1 |
<?php |
| 2 |
|
| 3 |
if (!defined('ABSPATH')) exit; |
| 4 |
|
| 5 |
class berqMetaBoxAIO extends berqIntegrations { |
| 6 |
function __construct() { |
| 7 |
add_filter( 'berqwp_warmup_post_types', [$this, 'build_map'] ); |
| 8 |
} |
| 9 |
|
| 10 |
function detect_cpt() { |
| 11 |
$extensions = get_option('meta_box_aio', []); |
| 12 |
|
| 13 |
return !empty($extensions['extensions']) && in_array('mb-custom-post-type', $extensions['extensions']); |
| 14 |
} |
| 15 |
|
| 16 |
function build_map($post_types) { |
| 17 |
|
| 18 |
if (!$this->detect_cpt()) { |
| 19 |
return $post_types; |
| 20 |
} |
| 21 |
|
| 22 |
$mb_rewrite_map = []; |
| 23 |
$mb_cpt_posts = get_posts([ |
| 24 |
'posts_per_page' => -1, |
| 25 |
'post_status' => 'publish', |
| 26 |
'post_type' => 'mb-post-type', |
| 27 |
'no_found_rows' => true, |
| 28 |
'update_post_meta_cache' => false, |
| 29 |
'update_post_term_cache' => false, |
| 30 |
]); |
| 31 |
|
| 32 |
foreach ( $mb_cpt_posts as $mb_post ) { |
| 33 |
$settings = json_decode( $mb_post->post_content, true ); |
| 34 |
if ( ! empty( $settings['slug'] ) ) { |
| 35 |
$rewrite_slug = ! empty( $settings['rewrite']['slug'] ) ? $settings['rewrite']['slug'] : $settings['slug']; |
| 36 |
$mb_rewrite_map[ $settings['slug'] ] = $rewrite_slug; |
| 37 |
} |
| 38 |
} |
| 39 |
|
| 40 |
add_filter('berqwp_warmup_post_types_rewrite_map', function () use ($mb_rewrite_map) { |
| 41 |
return $mb_rewrite_map; |
| 42 |
}); |
| 43 |
|
| 44 |
$mb_slugs = array_keys( $mb_rewrite_map ); |
| 45 |
$post_types = array_values( array_unique( array_merge( $post_types, $mb_slugs ) ) ); |
| 46 |
|
| 47 |
return $post_types; |
| 48 |
} |
| 49 |
|
| 50 |
|
| 51 |
} |
| 52 |
|
| 53 |
new berqMetaBoxAIO(); |