Support » Allgemeine Fragen » Get $post_id liefert den falschen Wert.

  • Hi liebe Community,

    ich bin total am verzweifeln. Normalerweise liefert mir „$post_id“ oder „get_the_ID()“ die aktuelle ID eines Posts oder einer Seite. Nun bin ich dabei die WooCommerce Shop Base Seite abzufangen um bestimmte Anpassungen vorzunehmen. Ich möchte also abfragen ob die aktuell angezeigte Seite mit der vorliegenden ID übereinstimmt. Das funktioniert in allen Fällen auch wunderbar damit:

    global $post;
    if ( is_page( $post_id ) ) {
       // do something
    }

    Mein Problem ist das die ID der WooCommerce Shop Base Seite aber nicht mit der $post_id übereinstimmt. Denn frage ich „$post_id“ und „get_option( ‚woocommerce_shop_page_id‘ )“ ab, erhalte ich unterschiedliche IDs. Das ist der Grund warum diese Vorgehensweise nicht funktioniert.

    Wie kann ich es nun erreichen, dass meine Abfrage zutrifft?

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Kein Wunder 😉

    Das gibt dir die „Mein Konto“-Seite zurück, du möchtest aber wahrscheinlich die Shop-Seite. Das muss dann als Parameter mit angegeben werden:
    https://www.skyverge.com/blog/get-woocommerce-page-urls/

    Wäre es nicht vielleicht einfacher mit is_shop zu arbeiten?
    https://docs.woocommerce.com/document/conditional-tags/

    Gruß, Torsten

    Thread-Starter wootimes

    (@wootimes)

    Hi Torsten,

    danke für dein Feedback. Leider hilft mir das nicht weiter. Innerhalb eines loops können verschiedene Bereiche über das Backend hinzugefügt werden. Mit der zusätzlichen Auswahl von Page, Posts oder Products kann dann festgelegt werden, welcher Bereich wo angezeigt wird. Wähle ich die definierte WooCommerce Shop Page aus, dann funktioniert es nicht. Hier erhalte ich statt der von WordPress festgelegten Post ID, die ID des neusten WooCommerce Produktes. Deshalb trifft meine Abfrage nicht zu, wenn es darum geht einen bestimmten Bereich nur auf dieser Seite anzuzeigen.

    Die Abfrage sieht so aus:

    ...
    $leading_area_visibility_pages = ACF_GSF('leading_area_visibility_pages', 'option');
    ...
    if( $leading_area_visibility == 'post' ) {
    		// specific post
    		$display = is_single( $leading_area_visibility_posts );
    	} elseif( $leading_area_visibility == 'page' ) {
    		// specific page
    		$display = is_page( $leading_area_visibility_pages );
    	} elseif( $leading_area_visibility == 'frontpage' ) {
    		// front page
    		$display = is_front_page();
    	} elseif( $leading_area_visibility == 'each_post' ) {
    		// each post
    		$display = is_singular( 'post' );
    	} elseif( $leading_area_visibility == 'each_page' ) {
    		// each page
    		$display = is_singular( 'page' );
    	}
    if( $display ) {
        // show it
    }

    Wenn ich die Abfrage is_shop( $leading_area_visibility_pages ) ergänze, dann werden alle Bereiche an dieser Stelle angezeigt, die dort nicht sein dürften.

    Könnte man das evtl. umgehen? Es hängt wohl damit zusammen, dass die WooCommerce Shop Base Page keine eigene ID erhält.

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Das Thema „Get $post_id liefert den falschen Wert.“ ist für neue Antworten geschlossen.