$classes, ) ); // Set default values. $format = '%link'; $link = 'next' === $navigation_type ? __( 'Next', 'brandy' ) : __( 'Previous', 'brandy' ); $label = ''; // Only use hardcoded values here, otherwise we need to add escaping where these values are used. $arrow_map = array( 'none' => '', 'arrow' => array( 'next' => '→', 'previous' => '←', ), 'chevron' => array( 'next' => '»', 'previous' => '«', ), ); // If a custom label is provided, make this a link. // `$label` is used to prepend the provided label, if we want to show the page title as well. if ( isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ) { $label = "{$attributes['label']}"; $link = $label; } // If we want to also show the page title, make the page title a link and prepend the label. if ( isset( $attributes['showTitle'] ) && $attributes['showTitle'] ) { /* * If the label link option is not enabled but there is a custom label, * display the custom label as text before the linked title. */ if ( ! $attributes['linkLabel'] ) { if ( $label ) { $format = '' . wp_kses_post( $label ) . ' %link'; } $link = '%title'; } elseif ( isset( $attributes['linkLabel'] ) && $attributes['linkLabel'] ) { // If the label link option is enabled and there is a custom label, display it before the title. if ( $label ) { $link = '' . wp_kses_post( $label ) . ' %title'; } else { /* * If the label link option is enabled and there is no custom label, * add a colon between the label and the post title. */ $label = 'next' === $navigation_type ? __( 'Next:', 'brandy' ) : __( 'Previous:', 'brandy' ); $link = sprintf( '%1$s %2$s', wp_kses_post( $label ), '%title' ); } } } if ( 'previous' === $navigation_type && is_attachment() ) { $post = get_post( get_post()->post_parent ); } else { if ( ! empty( $attributes['taxonomy'] ) ) { $post = get_adjacent_post( true, '', $attributes['taxonomy'] ); } else { $post = get_adjacent_post( false, '' ); } } $post_thumbnail = get_the_post_thumbnail( $post->ID ); if ( empty( $next_post_thumbnail ) ) { $post_thumbnail = brandy_get_post_placeholder_thumbnail(); } // Display arrows. if ( isset( $attributes['arrow'] ) && 'none' !== $attributes['arrow'] && isset( $arrow_map[ $attributes['arrow'] ] ) ) { $arrow = $arrow_map[ $attributes['arrow'] ][ $navigation_type ]; $format = '%link'; $link = sprintf( '
%s%s

%s post

%s

', $navigation_type, $post_thumbnail, $arrow, 'next' === $navigation_type ? __( 'Next', 'brandy' ) : __( 'Previous', 'brandy' ), $post->post_title ); } /* * The dynamic portion of the function name, `$navigation_type`, * Refers to the type of adjacency, 'next' or 'previous'. * * @see https://developer.wordpress.org/reference/functions/get_previous_post_link/ * @see https://developer.wordpress.org/reference/functions/get_next_post_link/ */ $get_link_function = "get_{$navigation_type}_post_link"; if ( ! empty( $attributes['taxonomy'] ) ) { $content = $get_link_function( $format, $link, true, '', $attributes['taxonomy'] ); } else { $content = $get_link_function( $format, $link ); } return sprintf( '
%2$s
', $wrapper_attributes, $content ); } }