在WooCommerce的存档页面模板中使用元框

时间:2014-05-20 作者:user1981248

我正在创建自己的Wordpress主题,并试图使其与Woocommerce兼容。我几乎了解woocommerce主题的所有内容,包括复制模板文件和更改它们,而且我还可以使用一些woocommerce挂钩。

现在Woocommerce使用归档产品。php文件来显示商店项目,目前它也在使用一个名为“shop”的页面。问题是我无法在存档产品中使用自定义的元框数据。当我将它们保存在“Shop”页面时的php文件。

所以我只想知道是否有在归档模板中使用元数据的方法,比如归档产品。Woocommerce的php模板。

有什么建议吗?

Edit: 因此,我能够通过在我包含的文件中使用以下代码完全解决我的问题:

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);

2 个回复
最合适的回答,由SO网友:aj-adl 整理而成

Woocommerce确实劫持了商店页面/产品查询上的主查询,因此您可能习惯于在循环中引用自定义字段,或者在其他一些上下文中引用全局$post是您所在的页面,但在这种情况下,$post的内容将是Woocommerce产品,而不是页面。

如果这是您的基本店铺页面,您可以引用这样的自定义字段(更改自定义元框字段的meta\\u键)

//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; 
我希望这对您的情况有所帮助,如果您使用上述代码,那么在尝试输出这些值之前,确保您位于商店页面上并且这些值存在,请始终进行防御性编码!

SO网友:helgatheviking

在包含的模板中,您可能可以执行以下操作:

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);
因此,它可以用于博客帖子或档案。

未经测试,因此您的里程数可能会有所不同。。)

结束

相关推荐

使用自定义POST类型填充的Metabox-如何根据选择输出CPT?

我有一个用自定义帖子类型填充的下拉式元框,现在在我的模板中,我可以获得元框输出的值,但我真正需要的是从所选CPT存储的所有信息,以显示在帖子的某些区域。My metabox$meta_boxes[] = array( \'id\' => \'actordetails\', \'title\' => \'Select an Actor\', \'pages\' => array( \'films\' ), \'context\' => \'normal