get_post_meta funktioniert nicht im Shortcode

Der folgende Code ist ein Bootstrap-Schieberegler, der in einen benutzerdefinierten Post-Typ umgewandelt wurde. Dieser benutzerdefinierte Post-Typ funktioniert von selbst, aber wenn ich versuche, ihn in Shortcode zu schreiben, funktioniert er nicht. Spezifisch funktioniert get_post_meta nicht, weil ich die Anhangsdatei sehen kann funktioniert richtig

Solutions Collecting From Web of "get_post_meta funktioniert nicht im Shortcode"

Ich glaube, das Problem ist, dass Sie im Shortcode keinen Zugriff auf das global $post Objekt haben.

  1. Sie könnten Ihre WP_Query mit einer get_posts() , die ein Array zurückgibt, get_posts() .
  2. Sie könnten get_the_ID(); .
  3. Sie könnten den global $post am Anfang Ihrer Shortcode-function aufrufen.

Das Problem ist, dass global $post technisch außerhalb des Gültigkeitsbereichs liegt, wenn es in dieser function verwendet wird. Die Schleifen- und benutzerdefinierten WP_Queries funktionieren in Templates gut, da wp() $post im globalen Namespace für die Vorlagen einfügt, die immer dann verwendet werden, wenn die Vorlage alle hinter den Kulissen geladen wird. Sobald Sie eine generische function, eine Shortcode-Callback-function oder add_shortcode() die eine anonyme function als zweiten Parameter übergibt, sind die globalen Variablen außerhalb des Gültigkeitsbereichs, bis Sie sie durch Aufruf von global $post in den Geltungsbereich bringen.

Um das hinzuzufügen. Der Grund get_*() warum die functionen get_*() funktionieren (wie get_the_title() oder get_the_ID() ), liegt daran, dass alle get_post() aufrufen, die den global $post get_post() verwenden und den Wert nach oben blasen.

Um mehr darüber zu lesen, können Sie PHP Variable Scope oder Variable Scope und WordPress von David Hayes ausprobieren