Eine virtuelle Seite mit einem dynamischen Shortcode-Attribut in URL

Ich bin diesem Beitrag gefolgt, um eine virtuelle Seite zu erstellen, die eine tägliche Zusammenfassung der veröffentlichten Posts des benutzerdefinierten Typs für ein “gestern” -Datum anzeigt. Ich habe dafür meine eigene Vorlage mit einem Shortcode verwendet, der einige (allgemeine oder für einen bestimmten Tag) Zusammenfassungen und Statistiken über veröffentlichte benutzerdefinierte Beiträge, die nach einer benutzerdefinierten Taxonomie gruppiert sind, zurückgeben kann. Das Zusammenfassungsdatum kann auf diese Weise über ein “Datum” -Attribut / Parameter in der URL an den Shortcode gesendet werden:

infopsi.md/?virtualpage=interesting-things&date=4.12.2017

Das funktioniert, aber ich möchte den virtualpage=interesting-things Teil von der URL ausschließen, also sollte es so aussehen:

infopsi.md/?date=4.12.2017

Wie entferne ich diesen Teil, um die Code-functionalität nicht zu beeinträchtigen? Beachten Sie, dass der Attributwert “date” ein dynamischer / variabler Wert ist.

 /* VIRTUAL PAGE */ /** * First create a query variable addition for the pages. This means that * WordPress will recognize index.php?virtualpage=name */ function example_virtualpage_query_vars($vars) { $vars[] = 'virtualpage'; return $vars; } add_filter('query_vars', 'example_virtualpage_query_vars'); /** * Add redirects to point desired virtual page paths to the new * index.php?virtualpage=name destination. * * After this code is updated, the permalink settings in the administration * interface must be saved before they will take effect. This can be done * programmatically as well, using flush_rewrite_rules() triggered on theme * or plugin install, update, or removal. */ function example_virtualpage_add_rewrite_rules() { add_rewrite_tag('%virtualpage%', '([^&]+)'); add_rewrite_rule( 'interesting-things/?$', 'index.php?virtualpage=interesting-things', 'top' ); } add_action('init', 'example_virtualpage_add_rewrite_rules'); /** * Assign templates to the virtual pages. */ function example_virtualpage_template_include($template) { global $wp_query; $new_template = ''; if (array_key_exists('virtualpage', $wp_query->query_vars)) { switch ($wp_query->query_vars['virtualpage']) { case 'interesting-things': // We expect to find virtualpage-interesting-things.php in the // currently active theme. $new_template = locate_template(array( 'virtualpage-interesting-things.php' )); break; } if ($new_template != '') { return $new_template; } else { // This is not a valid virtualpage value, so set the header and template // for a 404 page. $wp_query->set_404(); status_header(404); return get_404_template(); } } return $template; } add_filter('template_include', 'example_virtualpage_template_include'); /* END VIRTUAL PAGE */ 

Der Kurzwahlcode:

 /* Return a summary of published events */ function infopsi_summary( $atts ) { $atts = shortcode_atts( array( 'days_ago' => '', 'display_titles' => '' ), $atts ); if( isset( $_GET['date'] ) ) { if( isset( $atts['days_ago'] ) ) unset( $atts['days_ago'] ); $yesterday_date = sanitize_text_field( $_GET['date'] ); } if( $atts['days_ago'] ) { $days_ago = $atts['days_ago']; $yesterday_date = get_date_from_gmt( date( 'dmY H:i:s', strtotime( "-" . $days_ago . " days" ) ), 'dmY' ); } if( $atts['days_ago'] || $_GET['date'] ) { $yesterday_date = explode( '.', $yesterday_date ); $posts = get_posts( array( 'post_type' => 'event', 'nopaging' => true, 'date_query' => array( array('day' => $yesterday_date[0], 'month' => $yesterday_date[1], 'year' => $yesterday_date[2] ) ) ) ); $yesterday_date = implode( '.', $yesterday_date ); $yesterday_events = '
' . '

Buletin InfoPsi.md / ' . $yesterday_date . '

' . '

Pe data de ' . $yesterday_date . ' au fost publicate ' . count( $posts ) . ' evenimente noi, după cum urmează:

'; } else { $posts = get_posts( array( 'post_type' => 'event', 'nopaging' => true ) ); $yesterday_events = '
' . '

Buletin InfoPsi.md

' . '

Pe portalul InfoPsi.md sunt publicate în total ' . count( $posts ) . ' de evenimente curente sau viitoare, după cum urmează:

'; } $terms = get_terms( array( 'taxonomy' => 'event-categories', 'hide_empty' => false ) ); foreach( $terms as $t ) { $posts_in_term = array_filter( $posts, function( $p ) use ( $t ) { return has_term( $t->term_id, 'event-categories', $p ); } ); if( count( $posts_in_term ) ) { $term_link = get_term_link( $t ); $yesterday_events .= '
' . $t->name . ' (' . count( $posts_in_term ) . ')
'; } if( $atts['display_titles'] == 'yes' ) { $yesterday_events .= '
    '; foreach( $posts_in_term as $post ) { $post_link = get_permalink( $post->ID ); $yesterday_events .= '
  • ' . $post->post_title . '
  • '; } $yesterday_events .= '
'; } } $yesterday_events .= '
'; // end of summary return $yesterday_events; } add_shortcode( 'summary', 'infopsi_summary' );

Die Vorlage:

 get_header(); ?> 
<?php get_footer();

Solutions Collecting From Web of "Eine virtuelle Seite mit einem dynamischen Shortcode-Attribut in URL"