- open-graph-tags.php: replace Plugin Name header with package docblock - featured-image-generator.php: same cleanup - sp-event-permalink.php: same cleanup, normalize indentation to tabs, collapse redundant switch cases (league/tournament both map to 'game') Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
114 lines
2.5 KiB
PHP
114 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Custom permalink structure for sp_event post type.
|
|
*
|
|
* @package Tonys_Sportspress_Enhancements
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Register custom rewrite rules for sp_event.
|
|
*
|
|
* @return void
|
|
*/
|
|
function custom_event_rewrite_rules() {
|
|
add_rewrite_rule(
|
|
'(?:event|game)/.*?[/]?([0-9]+)[/]?$',
|
|
'index.php?post_type=sp_event&p=$matches[1]',
|
|
'top'
|
|
);
|
|
}
|
|
add_action( 'init', 'custom_event_rewrite_rules' );
|
|
|
|
/**
|
|
* Customize the permalink structure for sp_event posts.
|
|
*
|
|
* @param string $permalink Existing permalink.
|
|
* @param WP_Post $post Post object.
|
|
* @return string
|
|
*/
|
|
function custom_event_permalink( $permalink, $post ) {
|
|
if ( $post->post_type !== 'sp_event' ) {
|
|
return $permalink;
|
|
}
|
|
|
|
$teams = get_post_meta( $post->ID, 'sp_team', false );
|
|
$format = get_post_meta( $post->ID, 'sp_format', true );
|
|
sort( $teams );
|
|
$seasons = get_the_terms( $post->ID, 'sp_season', true );
|
|
|
|
if ( $seasons ) {
|
|
$seasons_slug = implode(
|
|
'-',
|
|
array_map( function( $season ) { return $season->slug; }, $seasons )
|
|
);
|
|
} else {
|
|
$seasons_slug = 'no-season';
|
|
}
|
|
|
|
$team_1 = isset( $teams[0] ) ? get_post( $teams[0] ) : null;
|
|
$team_2 = isset( $teams[1] ) ? get_post( $teams[1] ) : null;
|
|
|
|
switch ( $format ) {
|
|
case 'league':
|
|
case 'tournament':
|
|
$format_string = 'game';
|
|
break;
|
|
default:
|
|
$format_string = 'event';
|
|
break;
|
|
}
|
|
|
|
if ( $team_1 && $team_2 ) {
|
|
$permalink = home_url( $format_string . '/' . $seasons_slug . '/' . $team_1->post_name . '-' . $team_2->post_name . '/' . $post->ID );
|
|
}
|
|
|
|
return $permalink;
|
|
}
|
|
add_filter( 'post_type_link', 'custom_event_permalink', 10, 2 );
|
|
|
|
/**
|
|
* Flush rewrite rules on activation.
|
|
*
|
|
* @return void
|
|
*/
|
|
function custom_event_rewrite_flush() {
|
|
custom_event_rewrite_rules();
|
|
flush_rewrite_rules();
|
|
}
|
|
register_activation_hook( __FILE__, 'custom_event_rewrite_flush' );
|
|
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );
|
|
|
|
/**
|
|
* Allow scheduled events to resolve on the frontend.
|
|
*
|
|
* @param WP_Query $query Current query.
|
|
* @return void
|
|
*/
|
|
function custom_event_parse_request( $query ) {
|
|
if ( ! $query instanceof WP_Query ) {
|
|
return;
|
|
}
|
|
|
|
if ( is_admin() || ! $query->is_main_query() ) {
|
|
return;
|
|
}
|
|
|
|
if ( 'sp_event' !== $query->get( 'post_type' ) ) {
|
|
return;
|
|
}
|
|
|
|
$post_id = absint( $query->get( 'p' ) );
|
|
if ( $post_id <= 0 ) {
|
|
return;
|
|
}
|
|
|
|
$query->set( 'post_type', 'sp_event' );
|
|
$query->set( 'p', $post_id );
|
|
$query->set( 'post_status', array( 'publish', 'future' ) );
|
|
}
|
|
add_action( 'pre_get_posts', 'custom_event_parse_request' );
|