改变 BigCommerce 的 Wordpress 目录
Altering BigCommerce's Wordpress Catalog
我想 link 我的 Wordpress 博客帖子到产品类别(以编程方式),所以我更新了 bigcommerce_product
分类法类型,使其也出现在 post
内容类型中,使用以下内容代码。
function shop_modify_bc_taxonomy() {
$tax = 'bigcommerce_category';
$bcArgs = get_taxonomy( $tax ); // returns an object
$bcArgs->object_type = array_merge($bcArgs->object_type, ['post']); // Add 'post'
register_taxonomy( $tax, $bcArgs->object_type, (array) $bcArgs );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'shop_modify_bc_taxonomy', 20 );
然而,现在,当帖子与术语相关联时,它们会显示在产品目录中。
如果我在函数中添加以下行 BigCommerce\Templates\Product_Archive::get_posts()
我的问题就解决了:
private function get_posts( \WP_Query $query ) {
$cards = [];
while ( $query->have_posts() ) {
$query->the_post();
// Add this line
if (get_post_type() !== 'bigcommerce_product') { continue; }
$product = new Product( get_the_ID() );
$card = Product_Card::factory( [
Product_Card::PRODUCT => $product,
] );
$cards[] = $card->render();
}
wp_reset_query();
return $cards;
}
但我不知道如何覆盖这个 class。我可以加入 WP_Query 吗?
使用 pre_get_posts
,我们可以在主题的 function.php
文件
中将 post_type
限制为 Big Commerce 产品
function edit_bigcommerce_queries( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// Is a BigCommerce Category Page
if ( !empty( $query->query['bigcommerce_category']) {
$query->set( 'post_type', 'bigcommerce_product');
}
}
}
add_action( 'pre_get_posts', 'edit_bigcommerce_queries' );
我想 link 我的 Wordpress 博客帖子到产品类别(以编程方式),所以我更新了 bigcommerce_product
分类法类型,使其也出现在 post
内容类型中,使用以下内容代码。
function shop_modify_bc_taxonomy() {
$tax = 'bigcommerce_category';
$bcArgs = get_taxonomy( $tax ); // returns an object
$bcArgs->object_type = array_merge($bcArgs->object_type, ['post']); // Add 'post'
register_taxonomy( $tax, $bcArgs->object_type, (array) $bcArgs );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'shop_modify_bc_taxonomy', 20 );
然而,现在,当帖子与术语相关联时,它们会显示在产品目录中。
如果我在函数中添加以下行 BigCommerce\Templates\Product_Archive::get_posts()
我的问题就解决了:
private function get_posts( \WP_Query $query ) {
$cards = [];
while ( $query->have_posts() ) {
$query->the_post();
// Add this line
if (get_post_type() !== 'bigcommerce_product') { continue; }
$product = new Product( get_the_ID() );
$card = Product_Card::factory( [
Product_Card::PRODUCT => $product,
] );
$cards[] = $card->render();
}
wp_reset_query();
return $cards;
}
但我不知道如何覆盖这个 class。我可以加入 WP_Query 吗?
使用 pre_get_posts
,我们可以在主题的 function.php
文件
post_type
限制为 Big Commerce 产品
function edit_bigcommerce_queries( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// Is a BigCommerce Category Page
if ( !empty( $query->query['bigcommerce_category']) {
$query->set( 'post_type', 'bigcommerce_product');
}
}
}
add_action( 'pre_get_posts', 'edit_bigcommerce_queries' );