Kann eine Bedingung für einen Teil eines Slugs gelten?

Gibt es einen Weg (und wenn ja, wie?), Eine Bedingung auf eine Seite / einen Beitrag anzuwenden, für die der Slug ein bestimmtes Wort enthält.

Im Falle des Codex-Beispiels von:

is_single( 'beef-stew' ) 

Die Bedingung gilt immer noch, wenn die Schnecke “Rindfleisch” enthält und nicht “Rindereintopf” ist.

UPDATE: Als Antwort auf eine Anfrage für den Kontext …

Ich habe ein Nav-Menü, das eine bedingte statement (Beispiel unten) verwendet, um eine CSS-class auf ein Element anzuwenden, wenn es sich um die betrachtete Seite handelt.

   

Im obigen Beispiel ist ‘mon’ ‘montag’, mit ähnlichen für andere Tage in einem wöchentlichen Zeitplan. Wenn ich eine Vorlage hinzufüge, kann sie für jeden Tag verwendet werden, vorausgesetzt, ich setze einen passenden Slug … ein Beispiel dafür ist “mon” anstelle von “Montag, 4. April”.

Ich möchte die Bedingung nur auf einen Teil des Slugs anwenden und so die Zeit sparen, den Slug vor dem Speichern manuell zu ändern … und auch die Situation der Fehlfunktion zu entfernen, wenn ich das vergesse.

Solutions Collecting From Web of "Kann eine Bedingung für einen Teil eines Slugs gelten?"

WordPress hat keine Bedingung für das Testen von Teilstrings, aber Sie können dies mit der integrierten PHP-function strpos() : strpos()

 global $post; if( false !== strpos( $post->post_name, 'beef' ) ) { // Do Things } 

Das obige Ergebnis ist wahr, wenn beef irgendwo in der Postschnecke gefunden wird.

In ähnlicher Weise wie @Howdy_McGee könnten wir versuchen, eine Hilfsfunktion zu konstruieren:

 /** * @param $s String * @return bool */ function queried_post_name_contains_wpse247782( $s ) { $obj = get_queried_object(); return $obj instanceof \WP_Post // Make sure it's a post object && false !== strpos( $obj->post_name, $s ); // post name contains it } 

und benutze es wie:

 if( is_single() && queried_post_name_contains_wpse247782( 'beef' ) ) { // ... } 

Hoffe du kannst es weiter auf deine Bedürfnisse ausdehnen!