BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
public_html
/
CTR
/
wp-content
/
themes
/
go
/
includes
📤 Upload
📝 New File
📁 New Folder
Close
Editing: amp.php
<?php /** * AMP Compatibility. * * @package Go\AMP */ namespace Go\AMP; /** * Set up theme defaults and register supported WordPress features. * * @return void */ function setup() { $n = function ( $function ) { return __NAMESPACE__ . "\\$function"; }; add_filter( 'walker_nav_menu_start_el', $n( 'amp_nav_sub_menu_buttons' ), 10, 4 ); add_filter( 'body_class', $n( 'amp_body_class' ) ); } /** * Append amp to the body classes. * * @param array $classes Body classes array. * * @return array Filtered body classes array. */ function amp_body_class( $classes ) { if ( ! is_amp() ) { return $classes; } $classes[] = 'amp'; return $classes; } // phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter -- Parameters are coming from a hook. /** * Filter the HTML output of a nav menu item to add the AMP dropdown button to reveal the sub-menu. * * This is only used for AMP since in JS it is added via initMainNavigation() in navigation.js. * * @param string $item_output The menu item's starting HTML output. * @param WP_Post $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. * * @return string Modified nav menu item HTML. */ function amp_nav_sub_menu_buttons( $item_output, $item, $depth, $args ) { if ( ! is_amp() || 'primary' !== $args->theme_location || ! in_array( 'menu-item-has-children', $item->classes, true ) ) { return $item_output; } $expanded = in_array( 'current-menu-ancestor', $item->classes, true ); static $nav_menu_item_number = 0; ++$nav_menu_item_number; $expanded_state_id = 'navMenuItemExpanded' . $nav_menu_item_number; $item_output .= sprintf( '<amp-state id="%s"> <script type="application/json">%s</script> </amp-state>', esc_attr( $expanded_state_id ), wp_json_encode( $expanded ) ); $dropdown_button = sprintf( '<button class="dropdown-toggle%1$s" [class]="%2$s" aria-expanded="%3$s" [aria-expanded]="%4$s" on="%5$s"> <span class="screen-reader-text" [text]="%6$s">%7$s</span> </button>', esc_attr( $expanded ? ' toggled-on' : '' ), esc_attr( sprintf( "%s + ( $expanded_state_id ? %s : '' )", wp_json_encode( 'dropdown-toggle' ), wp_json_encode( ' toggled-on' ) ) ), esc_attr( wp_json_encode( $expanded ) ), esc_attr( "$expanded_state_id ? 'true' : 'false'" ), esc_attr( "tap:AMP.setState( { $expanded_state_id: ! $expanded_state_id } )" ), esc_attr( sprintf( "$expanded_state_id ? %s : %s", wp_json_encode( __( 'collapse child menu', 'go' ) ), wp_json_encode( __( 'expand child menu', 'go' ) ) ) ), esc_html( $expanded ? __( 'collapse child menu', 'go' ) : __( 'expand child menu', 'go' ) ) ); return $dropdown_button . $item_output; } // phpcs:enable Generic.CodeAnalysis.UnusedFunctionParameter /** * Determine whether it is an AMP response. * * This function is used as a "Conditional Tag" in WordPress. It can only be used at the `wp` action or later. * * @link https://developer.wordpress.org/themes/references/list-of-conditional-tags/ * @see amp_is_request() * * @return bool Is AMP response. */ function is_amp() { /** * Filter whether or not this is an AMP request. * * @var bool */ return (bool) apply_filters( 'go_is_amp', ( function_exists( 'amp_is_request' ) && amp_is_request() ) ); }
Save
Cancel