Verwenden Sie Meta-Boxen in einer Archivseitenvorlage für Woocommerce

Ich erstelle mein eigenes WordPress-Theme und versuche, es mit Woocommerce kompatibel zu machen. Ich verstehe so ziemlich alles über das Theming von Woocommerce, einschließlich des Kopierens der Vorlagendateien und des Änderns von ihnen, außerdem bin ich mit einigen der Woocommerce-Hooks auch bequem.

Jetzt verwendet Woocommerce eine archive-product.php-Datei, um Shop-Artikel anzuzeigen, und es verwendet derzeit auch eine Seite namens “Shop”. Das Problem ist, dass ich die benutzerdefinierten Meta-Box-Daten in meiner Datei archive-product.php nicht verwenden kann, wenn ich sie auf der Shop-Seite speichere.

Ich möchte also nur wissen, ob es in einer Archivvorlage wie der archive-product.php-Vorlage von Woocommerce überhaupt Metadaten-Box-Daten gibt.

Irgendwelche Vorschläge?

Bearbeiten: So konnte ich mein Problem vollständig lösen, indem ich den folgenden Code in der Datei verwendete, die ich einschließe:

if( is_shop() ) { $post_id = get_option( 'woocommerce_shop_page_id' );; } else { $post_id = $post->ID; } $meta_key = get_post_meta($post_id, 'meta_key', true); 

Solutions Collecting From Web of "Verwenden Sie Meta-Boxen in einer Archivseitenvorlage für Woocommerce"

Woocommerce entführt die Hauptabfrage auf der Shopseite / Produktabfrage, daher ist es möglich, dass Sie Ihre benutzerdefinierten Felder innerhalb der Schleife oder in einem anderen Kontext referenzieren, in dem der globale $ post die Seite ist, auf der Sie sich befinden Der Inhalt von $ post wird WooCommerce-Produkte sein und nicht die Seite.

Wenn dies für Ihre Basisshop-Seite ist, können Sie auf die benutzerdefinierten Felder wie folgt verweisen (ändern Sie für den Meta-Schlüssel Ihrer benutzerdefinierten Metabox-Felder)

 //returns shop page post object $your_shop_page = get_post( wc_get_page_id( 'shop' ) ); //access your meta fields like this $your_shop-page->your_meta_key; 

Ich hoffe, dies hilft in Ihrer Situation, wenn Sie den obigen Code verwenden, würde es helfen, um sicherzustellen, dass Sie auf der Shop-Seite sind und diese Werte existieren, bevor Sie versuchen, sie auszugeben, immer defensiv zu codieren!

In der Vorlage, die eingefügt wird, können Sie möglicherweise Folgendes tun:

 global $post; if( get_queried_object_id() == wc_get_page_id( 'shop' ) ) { $post_id = get_queried_object_id(); } else { $post_id = $post->ID; } get_post_meta( $post_id, 'meta_key', true); 

Damit es entweder für einen Blogpost oder für die Archive funktioniert.

Ungetestet, sodass Ihre Meilenzahl variieren kann. 😉