aboutsummaryrefslogtreecommitdiff
path: root/srcs/wordpress/wp-content/themes/twentytwenty/template-parts
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/wordpress/wp-content/themes/twentytwenty/template-parts')
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content-cover.php182
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content.php94
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-author-bio.php33
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-header.php75
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/featured-image.php43
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/footer-menus-widgets.php119
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-menu.php148
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-search.php34
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/navigation.php61
-rw-r--r--srcs/wordpress/wp-content/themes/twentytwenty/template-parts/pagination.php58
10 files changed, 847 insertions, 0 deletions
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content-cover.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content-cover.php
new file mode 100644
index 0000000..f9b480f
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content-cover.php
@@ -0,0 +1,182 @@
+<?php
+/**
+ * Displays the content when the cover template is used.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+?>
+
+<article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
+ <?php
+ // On the cover page template, output the cover header.
+ $cover_header_style = '';
+ $cover_header_classes = '';
+
+ $color_overlay_style = '';
+ $color_overlay_classes = '';
+
+ $image_url = ! post_password_required() ? get_the_post_thumbnail_url( get_the_ID(), 'twentytwenty-fullscreen' ) : '';
+
+ if ( $image_url ) {
+ $cover_header_style = ' style="background-image: url( ' . esc_url( $image_url ) . ' );"';
+ $cover_header_classes = ' bg-image';
+ }
+
+ // Get the color used for the color overlay.
+ $color_overlay_color = get_theme_mod( 'cover_template_overlay_background_color' );
+ if ( $color_overlay_color ) {
+ $color_overlay_style = ' style="color: ' . esc_attr( $color_overlay_color ) . ';"';
+ } else {
+ $color_overlay_style = '';
+ }
+
+ // Get the fixed background attachment option.
+ if ( get_theme_mod( 'cover_template_fixed_background', true ) ) {
+ $cover_header_classes .= ' bg-attachment-fixed';
+ }
+
+ // Get the opacity of the color overlay.
+ $color_overlay_opacity = get_theme_mod( 'cover_template_overlay_opacity' );
+ $color_overlay_opacity = ( false === $color_overlay_opacity ) ? 80 : $color_overlay_opacity;
+ $color_overlay_classes .= ' opacity-' . $color_overlay_opacity;
+ ?>
+
+ <div class="cover-header <?php echo $cover_header_classes; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static output ?>"<?php echo $cover_header_style; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to double check this, but for now, we want to pass PHPCS ;) ?>>
+ <div class="cover-header-inner-wrapper screen-height">
+ <div class="cover-header-inner">
+ <div class="cover-color-overlay color-accent<?php echo esc_attr( $color_overlay_classes ); ?>"<?php echo $color_overlay_style; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to double check this, but for now, we want to pass PHPCS ;) ?>></div>
+
+ <header class="entry-header has-text-align-center">
+ <div class="entry-header-inner section-inner medium">
+
+ <?php
+
+ /**
+ * Allow child themes and plugins to filter the display of the categories in the article header.
+ *
+ * @since 1.0.0
+ *
+ * @param bool Whether to show the categories in article header, Default true.
+ */
+ $show_categories = apply_filters( 'twentytwenty_show_categories_in_entry_header', true );
+
+ if ( true === $show_categories && has_category() ) {
+ ?>
+
+ <div class="entry-categories">
+ <span class="screen-reader-text"><?php _e( 'Categories', 'twentytwenty' ); ?></span>
+ <div class="entry-categories-inner">
+ <?php the_category( ' ' ); ?>
+ </div><!-- .entry-categories-inner -->
+ </div><!-- .entry-categories -->
+
+ <?php
+ }
+
+ the_title( '<h1 class="entry-title">', '</h1>' );
+
+ if ( is_page() ) {
+ ?>
+
+ <div class="to-the-content-wrapper">
+
+ <a href="#post-inner" class="to-the-content fill-children-current-color">
+ <?php twentytwenty_the_theme_svg( 'arrow-down' ); ?>
+ <div class="screen-reader-text"><?php _e( 'Scroll Down', 'twentytwenty' ); ?></div>
+ </a><!-- .to-the-content -->
+
+ </div><!-- .to-the-content-wrapper -->
+
+ <?php
+ } else {
+
+ $intro_text_width = '';
+
+ if ( is_singular() ) {
+ $intro_text_width = ' small';
+ } else {
+ $intro_text_width = ' thin';
+ }
+
+ if ( has_excerpt() ) {
+ ?>
+
+ <div class="intro-text section-inner max-percentage<?php echo esc_attr( $intro_text_width ); ?>">
+ <?php the_excerpt(); ?>
+ </div>
+
+ <?php
+ }
+
+ twentytwenty_the_post_meta( get_the_ID(), 'single-top' );
+
+ }
+ ?>
+
+ </div><!-- .entry-header-inner -->
+ </header><!-- .entry-header -->
+
+ </div><!-- .cover-header-inner -->
+ </div><!-- .cover-header-inner-wrapper -->
+ </div><!-- .cover-header -->
+
+ <div class="post-inner" id="post-inner">
+
+ <div class="entry-content">
+
+ <?php
+ the_content();
+ ?>
+
+ </div><!-- .entry-content -->
+ <?php
+ wp_link_pages(
+ array(
+ 'before' => '<nav class="post-nav-links bg-light-background" aria-label="' . esc_attr__( 'Page', 'twentytwenty' ) . '"><span class="label">' . __( 'Pages:', 'twentytwenty' ) . '</span>',
+ 'after' => '</nav>',
+ 'link_before' => '<span class="page-number">',
+ 'link_after' => '</span>',
+ )
+ );
+
+ edit_post_link();
+ // Single bottom post meta.
+ twentytwenty_the_post_meta( get_the_ID(), 'single-bottom' );
+
+ if ( is_single() ) {
+
+ get_template_part( 'template-parts/entry-author-bio' );
+
+ }
+ ?>
+
+ </div><!-- .post-inner -->
+
+ <?php
+
+ if ( is_single() ) {
+
+ get_template_part( 'template-parts/navigation' );
+ }
+
+ /**
+ * Output comments wrapper if it's a post, or if comments are open,
+ * or if there's a comment number – and check for password.
+ * */
+ if ( ( is_single() || is_page() ) && ( comments_open() || get_comments_number() ) && ! post_password_required() ) {
+ ?>
+
+ <div class="comments-wrapper section-inner">
+
+ <?php comments_template(); ?>
+
+ </div><!-- .comments-wrapper -->
+
+ <?php
+ }
+ ?>
+
+</article><!-- .post -->
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content.php
new file mode 100644
index 0000000..4b745fa
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/content.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * The default template for displaying content
+ *
+ * Used for both singular and index.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+?>
+
+<article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
+
+ <?php
+
+ get_template_part( 'template-parts/entry-header' );
+
+ if ( ! is_search() ) {
+ get_template_part( 'template-parts/featured-image' );
+ }
+
+ ?>
+
+ <div class="post-inner <?php echo is_page_template( 'templates/template-full-width.php' ) ? '' : 'thin'; ?> ">
+
+ <div class="entry-content">
+
+ <?php
+ if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) {
+ the_excerpt();
+ } else {
+ the_content( __( 'Continue reading', 'twentytwenty' ) );
+ }
+ ?>
+
+ </div><!-- .entry-content -->
+
+ </div><!-- .post-inner -->
+
+ <div class="section-inner">
+ <?php
+ wp_link_pages(
+ array(
+ 'before' => '<nav class="post-nav-links bg-light-background" aria-label="' . esc_attr__( 'Page', 'twentytwenty' ) . '"><span class="label">' . __( 'Pages:', 'twentytwenty' ) . '</span>',
+ 'after' => '</nav>',
+ 'link_before' => '<span class="page-number">',
+ 'link_after' => '</span>',
+ )
+ );
+
+ edit_post_link();
+
+ // Single bottom post meta.
+ twentytwenty_the_post_meta( get_the_ID(), 'single-bottom' );
+
+ if ( is_single() ) {
+
+ get_template_part( 'template-parts/entry-author-bio' );
+
+ }
+ ?>
+
+ </div><!-- .section-inner -->
+
+ <?php
+
+ if ( is_single() ) {
+
+ get_template_part( 'template-parts/navigation' );
+
+ }
+
+ /**
+ * Output comments wrapper if it's a post, or if comments are open,
+ * or if there's a comment number – and check for password.
+ * */
+ if ( ( is_single() || is_page() ) && ( comments_open() || get_comments_number() ) && ! post_password_required() ) {
+ ?>
+
+ <div class="comments-wrapper section-inner">
+
+ <?php comments_template(); ?>
+
+ </div><!-- .comments-wrapper -->
+
+ <?php
+ }
+ ?>
+
+</article><!-- .post -->
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-author-bio.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-author-bio.php
new file mode 100644
index 0000000..14553c6
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-author-bio.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * The template for displaying Author info
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+if ( (bool) get_the_author_meta( 'description' ) && (bool) get_theme_mod( 'show_author_bio', true ) ) : ?>
+<div class="author-bio">
+ <div class="author-title-wrapper">
+ <div class="author-avatar vcard">
+ <?php echo get_avatar( get_the_author_meta( 'ID' ), 160 ); ?>
+ </div>
+ <h2 class="author-title heading-size-4">
+ <?php
+ printf(
+ /* translators: %s: Author name */
+ __( 'By %s', 'twentytwenty' ),
+ esc_html( get_the_author() )
+ );
+ ?>
+ </h2>
+ </div><!-- .author-name -->
+ <div class="author-description">
+ <?php echo wp_kses_post( wpautop( get_the_author_meta( 'description' ) ) ); ?>
+ <a class="author-link" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
+ <?php _e( 'View Archive <span aria-hidden="true">&rarr;</span>', 'twentytwenty' ); ?>
+ </a>
+ </div><!-- .author-description -->
+</div><!-- .author-bio -->
+<?php endif; ?>
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-header.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-header.php
new file mode 100644
index 0000000..1f68550
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/entry-header.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Displays the post header
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+$entry_header_classes = '';
+
+if ( is_singular() ) {
+ $entry_header_classes .= ' header-footer-group';
+}
+
+?>
+
+<header class="entry-header has-text-align-center<?php echo esc_attr( $entry_header_classes ); ?>">
+
+ <div class="entry-header-inner section-inner medium">
+
+ <?php
+ /**
+ * Allow child themes and plugins to filter the display of the categories in the entry header.
+ *
+ * @since 1.0.0
+ *
+ * @param bool Whether to show the categories in header, Default true.
+ */
+ $show_categories = apply_filters( 'twentytwenty_show_categories_in_entry_header', true );
+
+ if ( true === $show_categories && has_category() ) {
+ ?>
+
+ <div class="entry-categories">
+ <span class="screen-reader-text"><?php _e( 'Categories', 'twentytwenty' ); ?></span>
+ <div class="entry-categories-inner">
+ <?php the_category( ' ' ); ?>
+ </div><!-- .entry-categories-inner -->
+ </div><!-- .entry-categories -->
+
+ <?php
+ }
+
+ if ( is_singular() ) {
+ the_title( '<h1 class="entry-title">', '</h1>' );
+ } else {
+ the_title( '<h2 class="entry-title heading-size-1"><a href="' . esc_url( get_permalink() ) . '">', '</a></h2>' );
+ }
+
+ $intro_text_width = '';
+
+ if ( is_singular() ) {
+ $intro_text_width = ' small';
+ } else {
+ $intro_text_width = ' thin';
+ }
+
+ if ( has_excerpt() && is_singular() ) {
+ ?>
+
+ <div class="intro-text section-inner max-percentage<?php echo $intro_text_width; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static output ?>">
+ <?php the_excerpt(); ?>
+ </div>
+
+ <?php
+ }
+
+ // Default to displaying the post meta.
+ twentytwenty_the_post_meta( get_the_ID(), 'single-top' );
+ ?>
+
+ </div><!-- .entry-header-inner -->
+
+</header><!-- .entry-header -->
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/featured-image.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/featured-image.php
new file mode 100644
index 0000000..03e48df
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/featured-image.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Displays the featured image
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+if ( has_post_thumbnail() && ! post_password_required() ) {
+
+ $featured_media_inner_classes = '';
+
+ // Make the featured media thinner on archive pages.
+ if ( ! is_singular() ) {
+ $featured_media_inner_classes .= ' medium';
+ }
+ ?>
+
+ <figure class="featured-media">
+
+ <div class="featured-media-inner section-inner<?php echo $featured_media_inner_classes; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static output ?>">
+
+ <?php
+ the_post_thumbnail();
+
+ $caption = get_the_post_thumbnail_caption();
+
+ if ( $caption ) {
+ ?>
+
+ <figcaption class="wp-caption-text"><?php echo esc_html( $caption ); ?></figcaption>
+
+ <?php
+ }
+ ?>
+
+ </div><!-- .featured-media-inner -->
+
+ </figure><!-- .featured-media -->
+
+ <?php
+}
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/footer-menus-widgets.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/footer-menus-widgets.php
new file mode 100644
index 0000000..fe89d64
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/footer-menus-widgets.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Displays the menus and widgets at the end of the main element.
+ * Visually, this output is presented as part of the footer element.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+$has_footer_menu = has_nav_menu( 'footer' );
+$has_social_menu = has_nav_menu( 'social' );
+
+$has_sidebar_1 = is_active_sidebar( 'sidebar-1' );
+$has_sidebar_2 = is_active_sidebar( 'sidebar-2' );
+
+// Only output the container if there are elements to display.
+if ( $has_footer_menu || $has_social_menu || $has_sidebar_1 || $has_sidebar_2 ) {
+ ?>
+
+ <div class="footer-nav-widgets-wrapper header-footer-group">
+
+ <div class="footer-inner section-inner">
+
+ <?php
+
+ $footer_top_classes = '';
+
+ $footer_top_classes .= $has_footer_menu ? ' has-footer-menu' : '';
+ $footer_top_classes .= $has_social_menu ? ' has-social-menu' : '';
+
+ if ( $has_footer_menu || $has_social_menu ) {
+ ?>
+ <div class="footer-top<?php echo $footer_top_classes; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static output ?>">
+ <?php if ( $has_footer_menu ) { ?>
+
+ <nav aria-label="<?php esc_attr_e( 'Footer', 'twentytwenty' ); ?>" role="navigation" class="footer-menu-wrapper">
+
+ <ul class="footer-menu reset-list-style">
+ <?php
+ wp_nav_menu(
+ array(
+ 'container' => '',
+ 'depth' => 1,
+ 'items_wrap' => '%3$s',
+ 'theme_location' => 'footer',
+ )
+ );
+ ?>
+ </ul>
+
+ </nav><!-- .site-nav -->
+
+ <?php } ?>
+ <?php if ( $has_social_menu ) { ?>
+
+ <nav aria-label="<?php esc_attr_e( 'Social links', 'twentytwenty' ); ?>" class="footer-social-wrapper">
+
+ <ul class="social-menu footer-social reset-list-style social-icons fill-children-current-color">
+
+ <?php
+ wp_nav_menu(
+ array(
+ 'theme_location' => 'social',
+ 'container' => '',
+ 'container_class' => '',
+ 'items_wrap' => '%3$s',
+ 'menu_id' => '',
+ 'menu_class' => '',
+ 'depth' => 1,
+ 'link_before' => '<span class="screen-reader-text">',
+ 'link_after' => '</span>',
+ 'fallback_cb' => '',
+ )
+ );
+ ?>
+
+ </ul><!-- .footer-social -->
+
+ </nav><!-- .footer-social-wrapper -->
+
+ <?php } ?>
+ </div><!-- .footer-top -->
+
+ <?php } ?>
+
+ <?php if ( $has_sidebar_1 || $has_sidebar_2 ) { ?>
+
+ <aside class="footer-widgets-outer-wrapper" role="complementary">
+
+ <div class="footer-widgets-wrapper">
+
+ <?php if ( $has_sidebar_1 ) { ?>
+
+ <div class="footer-widgets column-one grid-item">
+ <?php dynamic_sidebar( 'sidebar-1' ); ?>
+ </div>
+
+ <?php } ?>
+
+ <?php if ( $has_sidebar_2 ) { ?>
+
+ <div class="footer-widgets column-two grid-item">
+ <?php dynamic_sidebar( 'sidebar-2' ); ?>
+ </div>
+
+ <?php } ?>
+
+ </div><!-- .footer-widgets-wrapper -->
+
+ </aside><!-- .footer-widgets-outer-wrapper -->
+
+ <?php } ?>
+
+ </div><!-- .footer-inner -->
+
+ </div><!-- .footer-nav-widgets-wrapper -->
+
+<?php } ?>
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-menu.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-menu.php
new file mode 100644
index 0000000..20b9628
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-menu.php
@@ -0,0 +1,148 @@
+<?php
+/**
+ * Displays the menu icon and modal
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+?>
+
+<div class="menu-modal cover-modal header-footer-group" data-modal-target-string=".menu-modal">
+
+ <div class="menu-modal-inner modal-inner">
+
+ <div class="menu-wrapper section-inner">
+
+ <div class="menu-top">
+
+ <button class="toggle close-nav-toggle fill-children-current-color" data-toggle-target=".menu-modal" data-toggle-body-class="showing-menu-modal" aria-expanded="false" data-set-focus=".menu-modal">
+ <span class="toggle-text"><?php _e( 'Close Menu', 'twentytwenty' ); ?></span>
+ <?php twentytwenty_the_theme_svg( 'cross' ); ?>
+ </button><!-- .nav-toggle -->
+
+ <?php
+
+ $mobile_menu_location = '';
+
+ // If the mobile menu location is not set, use the primary and expanded locations as fallbacks, in that order.
+ if ( has_nav_menu( 'mobile' ) ) {
+ $mobile_menu_location = 'mobile';
+ } elseif ( has_nav_menu( 'primary' ) ) {
+ $mobile_menu_location = 'primary';
+ } elseif ( has_nav_menu( 'expanded' ) ) {
+ $mobile_menu_location = 'expanded';
+ }
+
+ if ( has_nav_menu( 'expanded' ) ) {
+
+ $expanded_nav_classes = '';
+
+ if ( 'expanded' === $mobile_menu_location ) {
+ $expanded_nav_classes .= ' mobile-menu';
+ }
+
+ ?>
+
+ <nav class="expanded-menu<?php echo esc_attr( $expanded_nav_classes ); ?>" aria-label="<?php esc_attr_e( 'Expanded', 'twentytwenty' ); ?>" role="navigation">
+
+ <ul class="modal-menu reset-list-style">
+ <?php
+ if ( has_nav_menu( 'expanded' ) ) {
+ wp_nav_menu(
+ array(
+ 'container' => '',
+ 'items_wrap' => '%3$s',
+ 'show_toggles' => true,
+ 'theme_location' => 'expanded',
+ )
+ );
+ }
+ ?>
+ </ul>
+
+ </nav>
+
+ <?php
+ }
+
+ if ( 'expanded' !== $mobile_menu_location ) {
+ ?>
+
+ <nav class="mobile-menu" aria-label="<?php esc_attr_e( 'Mobile', 'twentytwenty' ); ?>" role="navigation">
+
+ <ul class="modal-menu reset-list-style">
+
+ <?php
+ if ( $mobile_menu_location ) {
+
+ wp_nav_menu(
+ array(
+ 'container' => '',
+ 'items_wrap' => '%3$s',
+ 'show_toggles' => true,
+ 'theme_location' => $mobile_menu_location,
+ )
+ );
+
+ } else {
+
+ wp_list_pages(
+ array(
+ 'match_menu_classes' => true,
+ 'show_toggles' => true,
+ 'title_li' => false,
+ 'walker' => new TwentyTwenty_Walker_Page(),
+ )
+ );
+
+ }
+ ?>
+
+ </ul>
+
+ </nav>
+
+ <?php
+ }
+ ?>
+
+ </div><!-- .menu-top -->
+
+ <div class="menu-bottom">
+
+ <?php if ( has_nav_menu( 'social' ) ) { ?>
+
+ <nav aria-label="<?php esc_attr_e( 'Expanded Social links', 'twentytwenty' ); ?>" role="navigation">
+ <ul class="social-menu reset-list-style social-icons fill-children-current-color">
+
+ <?php
+ wp_nav_menu(
+ array(
+ 'theme_location' => 'social',
+ 'container' => '',
+ 'container_class' => '',
+ 'items_wrap' => '%3$s',
+ 'menu_id' => '',
+ 'menu_class' => '',
+ 'depth' => 1,
+ 'link_before' => '<span class="screen-reader-text">',
+ 'link_after' => '</span>',
+ 'fallback_cb' => '',
+ )
+ );
+ ?>
+
+ </ul>
+ </nav><!-- .social-menu -->
+
+ <?php } ?>
+
+ </div><!-- .menu-bottom -->
+
+ </div><!-- .menu-wrapper -->
+
+ </div><!-- .menu-modal-inner -->
+
+</div><!-- .menu-modal -->
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-search.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-search.php
new file mode 100644
index 0000000..e01090a
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/modal-search.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Displays the search icon and modal
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+?>
+<div class="search-modal cover-modal header-footer-group" data-modal-target-string=".search-modal">
+
+ <div class="search-modal-inner modal-inner">
+
+ <div class="section-inner">
+
+ <?php
+ get_search_form(
+ array(
+ 'label' => __( 'Search for:', 'twentytwenty' ),
+ )
+ );
+ ?>
+
+ <button class="toggle search-untoggle close-search-toggle fill-children-current-color" data-toggle-target=".search-modal" data-toggle-body-class="showing-search-modal" data-set-focus=".search-modal .search-field" aria-expanded="false">
+ <span class="screen-reader-text"><?php _e( 'Close search', 'twentytwenty' ); ?></span>
+ <?php twentytwenty_the_theme_svg( 'cross' ); ?>
+ </button><!-- .search-toggle -->
+
+ </div><!-- .section-inner -->
+
+ </div><!-- .search-modal-inner -->
+
+</div><!-- .menu-modal -->
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/navigation.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/navigation.php
new file mode 100644
index 0000000..ca4eff6
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/navigation.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Displays the next and previous post navigation in single posts.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+$next_post = get_next_post();
+$prev_post = get_previous_post();
+
+if ( $next_post || $prev_post ) {
+
+ $pagination_classes = '';
+
+ if ( ! $next_post ) {
+ $pagination_classes = ' only-one only-prev';
+ } elseif ( ! $prev_post ) {
+ $pagination_classes = ' only-one only-next';
+ }
+
+ ?>
+
+ <nav class="pagination-single section-inner<?php echo esc_attr( $pagination_classes ); ?>" aria-label="<?php esc_attr_e( 'Post', 'twentytwenty' ); ?>" role="navigation">
+
+ <hr class="styled-separator is-style-wide" aria-hidden="true" />
+
+ <div class="pagination-single-inner">
+
+ <?php
+ if ( $prev_post ) {
+ ?>
+
+ <a class="previous-post" href="<?php echo esc_url( get_permalink( $prev_post->ID ) ); ?>">
+ <span class="arrow" aria-hidden="true">&larr;</span>
+ <span class="title"><span class="title-inner"><?php echo wp_kses_post( get_the_title( $prev_post->ID ) ); ?></span></span>
+ </a>
+
+ <?php
+ }
+
+ if ( $next_post ) {
+ ?>
+
+ <a class="next-post" href="<?php echo esc_url( get_permalink( $next_post->ID ) ); ?>">
+ <span class="arrow" aria-hidden="true">&rarr;</span>
+ <span class="title"><span class="title-inner"><?php echo wp_kses_post( get_the_title( $next_post->ID ) ); ?></span></span>
+ </a>
+ <?php
+ }
+ ?>
+
+ </div><!-- .pagination-single-inner -->
+
+ <hr class="styled-separator is-style-wide" aria-hidden="true" />
+
+ </nav><!-- .pagination-single -->
+
+ <?php
+}
diff --git a/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/pagination.php b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/pagination.php
new file mode 100644
index 0000000..b2a6aca
--- /dev/null
+++ b/srcs/wordpress/wp-content/themes/twentytwenty/template-parts/pagination.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * A template partial to output pagination for the Twenty Twenty default theme.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
+ *
+ * @package WordPress
+ * @subpackage Twenty_Twenty
+ * @since 1.0.0
+ */
+
+/**
+ * Translators:
+ * This text contains HTML to allow the text to be shorter on small screens.
+ * The text inside the span with the class nav-short will be hidden on small screens.
+ */
+
+$prev_text = sprintf(
+ '%s <span class="nav-prev-text">%s</span>',
+ '<span aria-hidden="true">&larr;</span>',
+ __( 'Newer <span class="nav-short">Posts</span>', 'twentytwenty' )
+);
+$next_text = sprintf(
+ '<span class="nav-next-text">%s</span> %s',
+ __( 'Older <span class="nav-short">Posts</span>', 'twentytwenty' ),
+ '<span aria-hidden="true">&rarr;</span>'
+);
+
+$posts_pagination = get_the_posts_pagination(
+ array(
+ 'mid_size' => 1,
+ 'prev_text' => $prev_text,
+ 'next_text' => $next_text,
+ )
+);
+
+// If we're not outputting the previous page link, prepend a placeholder with visibility: hidden to take its place.
+if ( strpos( $posts_pagination, 'prev page-numbers' ) === false ) {
+ $posts_pagination = str_replace( '<div class="nav-links">', '<div class="nav-links"><span class="prev page-numbers placeholder" aria-hidden="true">' . $prev_text . '</span>', $posts_pagination );
+}
+
+// If we're not outputting the next page link, append a placeholder with visibility: hidden to take its place.
+if ( strpos( $posts_pagination, 'next page-numbers' ) === false ) {
+ $posts_pagination = str_replace( '</div>', '<span class="next page-numbers placeholder" aria-hidden="true">' . $next_text . '</span></div>', $posts_pagination );
+}
+
+if ( $posts_pagination ) { ?>
+
+ <div class="pagination-wrapper section-inner">
+
+ <hr class="styled-separator pagination-separator is-style-wide" aria-hidden="true" />
+
+ <?php echo $posts_pagination; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- already escaped during generation. ?>
+
+ </div><!-- .pagination-wrapper -->
+
+ <?php
+}