\WP_Stager_Integration\Calendar::get_nav_labels(array $args): array

Description

Gets the navigation labels for specific calendar settings.

Parameters:

ParameterTypeDescription
$args array The array of calendar settings. See \WP_Stager_Integration\Calendar::render_calendar() for accepted arguments.

Returns:

array The navigation labels

Information

Fileclass-calendar.php line 458
See also

Full Code

/**
 * Gets the navigation labels for specific calendar settings.
 *
 * @param array $args   The array of calendar settings. See <code>\WP_Stager_Integration\Calendar::render_calendar()</code> for accepted arguments.
 *
 * @return array   The navigation labels
 *
 * @see \WP_Stager_Integration\Calendar::render_calendar() for accepted arguments.
 */
public static function get_nav_labels( $args ) {

    // Type casting
    $args = (array) $args;

    // Get data
    $scope              = (string) ($args[ 'scope' ] ?? '');
    $nav_label_next     = (string) ($args[ 'nav_label_next' ] ?? '');
    $nav_label_previous = (string) ($args[ 'nav_label_previous' ] ?? '');
    $start              = (int) ($args[ 'start' ] ?? 0);
    $end                = (int) ($args[ 'end' ] ?? 0);

    switch ( $scope ) {

        case 'day':
            $date_format        = (string) (get_option( 'date_format' ) ?: 'F j, Y');
            $date_next          = (string) (wp_date( $date_format, self::calculate_offset_timestamp( $end, 'P1D' ) ) ?? '');
            $date_previous      = (string) (wp_date( $date_format, self::calculate_offset_timestamp( $start, '-P1D' ) ) ?? '');
            $nav_label_next     = $nav_label_next ?: $date_next ?: __( 'Next day', 'wp-stager-integration' );
            $nav_label_previous = $nav_label_previous ?: $date_previous ?: __( 'Previous day', 'wp-stager-integration' );
            break;

        case 'week':
            $year_number_current     = self::get_year_number( $start );
            $timestamp_week_start    = self::calculate_timestamp_week_start( $year_number_current, self::get_week_number( $start ) );
            $timestamp_next_week     = self::calculate_offset_timestamp( $timestamp_week_start, 'P1W' );
            $timestamp_previous_week = self::calculate_offset_timestamp( $timestamp_week_start, '-P1W' );
            $week_number_next        = self::get_week_number( $timestamp_next_week );
            $week_number_previous    = self::get_week_number( $timestamp_previous_week );
            $year_number_next        = self::get_year_number( $timestamp_next_week );
            $year_number_previous    = self::get_year_number( $timestamp_previous_week );

            // Define default labels
            $default_nav_label_next     = __( 'Next week', 'wp-stager-integration' );
            $default_nav_label_previous = __( 'Previous week', 'wp-stager-integration' );

            if ( $year_number_next !== $year_number_current ) {
                $nav_label_next = $nav_label_next ?: sprintf( /*
                                 * Translators:
                                 * %1$d: A week number (1-53)
                                 * %2$d: A four digit year number
                                 */__( 'Week %1$d (%2$d)', 'wp-stager-integration' ), $week_number_next, $year_number_next ) ?: $default_nav_label_next;
            } else {
                $nav_label_next = $nav_label_next ?: sprintf( /*
                                 * Translators:
                                 * %d: A week number (1-53)
                                 */__( 'Week %d', 'wp-stager-integration' ), $week_number_next ) ?: $default_nav_label_next;
            }

            if ( $year_number_previous !== $year_number_current ) {
                $nav_label_previous = $nav_label_previous ?: sprintf( /*
                                 * Translators:
                                 * %1$d: A week number (1-53)
                                 * %2$d: A four digit year number
                                 */__( 'Week %1$d (%2$d)', 'wp-stager-integration' ), $week_number_previous, $year_number_previous ) ?: $default_nav_label_previous;
            } else {
                $nav_label_previous = $nav_label_previous ?: sprintf( /*
                                 * Translators:
                                 * %d: A week number (1-53)
                                 */__( 'Week %d', 'wp-stager-integration' ), $week_number_previous ) ?: $default_nav_label_previous;
            }

            break;

        case 'month':
            $year_number_current  = self::get_year_number( $start );
            $month_number_current = self::get_month_number( $start );
            $year_next_month      = (12 === $month_number_current) ? $year_number_current + 1 : $year_number_current;
            $year_previous_month  = (1 === $month_number_current) ? $year_number_current - 1 : $year_number_current;
            $month_next_month     = (12 === $month_number_current) ? 1 : $month_number_current + 1;
            $month_previous_month = (1 === $month_number_current) ? 12 : $month_number_current - 1;
            $nav_label_next       = $nav_label_next ?: self::format_month_label( $year_next_month, $month_next_month ) ?: __( 'Next month', 'wp-stager-integration' );
            $nav_label_previous   = $nav_label_previous ?: self::format_month_label( $year_previous_month, $month_previous_month ) ?: __( 'Previous month', 'wp-stager-integration' );
            break;

        case 'year':
            $year_number_current  = self::get_year_number( $start );
            $year_number_next     = $year_number_current + 1;
            $year_number_previous = $year_number_current - 1;
            $nav_label_next       = $nav_label_next ?: $year_number_next ?: __( 'Next year', 'wp-stager-integration' );
            $nav_label_previous   = $nav_label_previous ?: $year_number_previous ?: __( 'Previous year', 'wp-stager-integration' );
            break;

        case 'event':
        default:
            $nav_label_next     = $nav_label_next ?: __( 'Next', 'wp-stager-integration' );
            $nav_label_previous = $nav_label_previous ?: __( 'Previous', 'wp-stager-integration' );
            break;
    }

    // Define labels
    $labels = array(
        'next'     => $nav_label_next,
        'previous' => $nav_label_previous,
    );

    return $labels;
}

💡 If you ever get stuck or have a question, please check our FAQs, our Free Integration Service, our paid Full Integration Service, or reach out to us!

Get WP Stager Integration

🎁 Limited offer: Use code WELCOME26 to get your first month for free!