podlove / podlove-publisher

Podlove Podcast Publisher for WordPress
https://wordpress.org/plugins/podlove-podcasting-plugin-for-wordpress/
MIT License
295 stars 82 forks source link

Feed bei %category% im Permalink nicht erreichbar #468

Closed nicolasschabram closed 9 years ago

nicolasschabram commented 9 years ago

Hey,

mir ist gerade aufgefallen, dass mein Podcast-Feed bei der folgenden Permalink-Struktur nicht mehr erreichbar ist (404): /%category%/%postname% Mit /%postname% funktioniert es.

Liegt es an mir oder ist das ein Bug?

Beste Grüße, Nicolas

eteubert commented 9 years ago

Ist bei mir auch so, definitiv ein Bug.

eteubert commented 9 years ago

Hey @astro, ich weiß, deine Zeit ist gerade knapp, aber kannst du hier bitte zumindest mal drauf schauen und mich in die richtige Richtung schubsen? Folgendes konnte ich eingrenzen:

Problem liegt in der add_podcast_rewrite_rules Methode (https://github.com/podlove/podlove-publisher/blob/1.10.16-alpha/plugin.php#L563), speziell folgender Block:

// Enable generic rules for pages if permalink structure doesn't begin with a wildcard
if ( "/%podcast%" == untrailingslashit( $permastruct ) ) {
    // Generate custom rewrite rules
    $wp_rewrite->matches = 'matches';
    $wp_rewrite->extra_rules = array_merge( $wp_rewrite->extra_rules, $wp_rewrite->generate_rewrite_rules( "%podcast%", EP_PERMALINK, true, true, false, true, true ) );
    $wp_rewrite->matches = '';

    // Add for WP_Query
    $wp_rewrite->use_verbose_page_rules = true;
// Use standard mode
} else {
    $wp_rewrite->add_permastruct( "podcast", $permastruct, false, EP_PERMALINK );
}

Im Fall von /%category%/%postname% ist der else-Block aktiv und scheint mir alles zu brechen. Ersetze ich die if-Klausel durch ein generischeres if ( stristr($permastruct, "/%podcast%") !== FALSE ) {, gehen zwar die Feeds wieder, aber die Episoden-Links sind nicht mehr pretty (was mir logisch erscheint, da es keine matchende Regel mehr gibt). Ich habe versucht, mit der extra_rules-Zeile zu spielen, aber erfolglos.

Jeder Hinweis ist willkommen. Danke! :)

astro commented 9 years ago

Ich kann dieses Perl nicht lesen. Wolltest du vielleicht jemand anderes herzu holen?

timpritlove commented 9 years ago

Ich glaube, hier war die WordPress Feuerwehr @gglnx gemeint.

eteubert commented 9 years ago

Uops, sorry! Da ist mir wohl eine Hirnwindung schief gewickelt. Der Tim hat meine Intention richtig erkannt, danke für die Aufklärung :)

timpritlove commented 9 years ago

landet im nächsten update

nicolasschabram commented 9 years ago

Ihr seid die Besten, vielen Dank! :)

gglnx commented 9 years ago

Für die Nachwelt: Das Problem war, dass $wp_rewrite->add_permastruct die Regeln für Podcast-Episode ganz an den Anfang aller Rewrite-Regeln gepackt hat. Damit hat /%category%/%podcast% auch bei /feed/mp3/ gegriffen. Jetzt sorgt add_podcast_episode_rules_to_post_rules für den Rewrite-Regelfall (also wenn die Permalink-Struktur nicht /%podcast%/ ist, dort haben wir ja ein getrenntes Handling), dass die Regeln auch an die Stelle, wo auch die für normale Beiträge sind, gepackt werden. Damit ist die richtige Reihenfolge gewährleistet.

timpritlove commented 9 years ago

Nachwelt dankt. Was für ein Voodoo.