|
Server : LiteSpeed System : Linux srv526460274 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : kerao9884 ( 1082) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /home/koplo99.net/public_html/wp-content/plugins/amp/includes/admin/ |
Upload File : |
<?php
/**
* Callbacks for adding AMP-related things to the admin.
*
* @package AMP
*/
use AmpProject\AmpWP\DependencySupport;
use AmpProject\AmpWP\Option;
use AmpProject\AmpWP\QueryVar;
use AmpProject\AmpWP\Services;
/**
* Sets up the AMP template editor for the Customizer.
*
* @internal
*/
function amp_init_customizer() {
if ( ! Services::get( 'dependency_support' )->has_support() ) {
return; // @codeCoverageIgnore
}
// Fire up the AMP Customizer.
add_action( 'customize_register', [ AMP_Template_Customizer::class, 'init' ], 500 );
if ( amp_is_legacy() ) {
// Add some basic design settings + controls to the Customizer.
add_action( 'amp_init', [ AMP_Customizer_Design_Settings::class, 'init' ] );
}
// Add a link to the AMP Customizer in Reader mode.
if ( AMP_Theme_Support::READER_MODE_SLUG === AMP_Options_Manager::get_option( Option::THEME_SUPPORT ) ) {
add_action( 'admin_menu', 'amp_add_customizer_link' );
}
}
/**
* Get permalink for the first AMP-eligible post.
*
* @todo Eliminate this in favor of ScannableURLProvider::get_posts_by_type().
* @see \AmpProject\AmpWP\Validation\ScannableURLProvider::get_posts_by_type()
*
* @internal
* @return string|null URL on success, null if none found.
*/
function amp_admin_get_preview_permalink() {
/**
* Filter the post type to retrieve the latest for use in the AMP template customizer.
*
* @todo This filter doesn't actually do anything at present. Instead of array_unique() below, an array_intersect() should have been used.
* @param string $post_type Post type slug. Default 'post'.
*/
$post_type = (string) apply_filters( 'amp_customizer_post_type', 'post' );
// Make sure the desired post type is actually supported, and if so, prefer it.
$supported_post_types = AMP_Post_Type_Support::get_supported_post_types();
if ( in_array( $post_type, $supported_post_types, true ) ) {
$supported_post_types = array_values( array_unique( array_merge( [ $post_type ], $supported_post_types ) ) );
}
// Bail if there are no supported post types.
if ( empty( $supported_post_types ) ) {
return null;
}
// If theme support is present, then bail if the singular template is not supported.
if ( ! amp_is_legacy() ) {
$supported_templates = AMP_Theme_Support::get_supportable_templates();
if ( empty( $supported_templates['is_singular']['supported'] ) ) {
return null;
}
}
$post_ids = get_posts(
[
'no_found_rows' => true,
'suppress_filters' => false,
'post_status' => 'publish',
'post_type' => $supported_post_types,
'posts_per_page' => 1,
'fields' => 'ids',
// @todo This should eventually do a meta_query to make sure there are none that have AMP_Post_Meta_Box::STATUS_POST_META_KEY = DISABLED_STATUS.
]
);
if ( empty( $post_ids ) ) {
return null;
}
$post_id = $post_ids[0];
return amp_get_permalink( $post_id );
}
/**
* Provides a URL to the customizer.
*
* @internal
* @return string
*/
function amp_get_customizer_url() {
$is_legacy = amp_is_legacy();
$mode = AMP_Options_Manager::get_option( Option::THEME_SUPPORT );
/** This filter is documented in includes/settings/class-amp-customizer-design-settings.php */
if ( 'reader' !== $mode || ( $is_legacy && ! apply_filters( 'amp_customizer_is_enabled', true ) ) ) {
return '';
}
$args = [
QueryVar::AMP_PREVIEW => '1',
];
if ( $is_legacy ) {
$args['autofocus[panel]'] = AMP_Template_Customizer::PANEL_ID;
} else {
$args[ amp_get_slug() ] = '1';
}
return add_query_arg( urlencode_deep( $args ), 'customize.php' );
}
/**
* Registers a submenu page to access the AMP template editor panel in the Customizer.
*
* @internal
*/
function amp_add_customizer_link() {
$customizer_url = amp_get_customizer_url();
if ( ! $customizer_url ) {
return;
}
// Add the theme page.
add_theme_page(
__( 'AMP', 'amp' ),
__( 'AMP', 'amp' ),
'edit_theme_options',
$customizer_url
);
}
/**
* Bootstrap AMP Editor core blocks.
*
* @internal
*/
function amp_editor_core_blocks() {
$editor_blocks = new AMP_Editor_Blocks();
$editor_blocks->init();
}
/**
* Bootstraps AMP admin classes.
*
* @since 1.5.0
* @internal
*/
function amp_bootstrap_admin() {
$admin_pointers = new AMP_Admin_Pointers();
$admin_pointers->init();
$post_meta_box = new AMP_Post_Meta_Box();
$post_meta_box->init();
}