Woocommerce - 尝试将产品数据与自定义表格中的数据合并
Woocommerce - Try to merge product data with data from custom tables
我有几个自定义表格,我正在使用带有 twig 的高级自定义字段 (acf)。这些字段存储在自定义表中。
例如:
custom_table1
、custom_table2
、custom_table1_table2_relation
等等。
它们可以在管理产品面板中进行编辑,并显示为与产品数据相关的对象。
现在我将把它们合并到一个关联数组中。
我有这个:
/*output*/
[post] => TimberPost Object (
[ImageClass] => TimberImage
[PostClass] => TimberPost
[object_type] => post
[class] => post-8 product type-product
[id] => 1
[post_author] => 1
[post_content] => description
[custom] => Array (
[table1-field1] => data
[table1-field2] => data
[table2_field1] => data
[table2_field] => data
)
)
我喜欢这个:
$products['products'] = array(
'id' => 1,
'post_content' => 'description',
'post_title' => 'title',
'and_so_on' => 'stuff',
[ 'custom' ] => array(
'table1' => array(
'data1' => 'content',
'data2' => 'content',
),
'table2' => array(
'data1' => 'content',
'data2' => 'content',
) /*and so on*/
)
);
我已经尝试扩展 WC_Class 并创建一个动作来在前面调用它们
这只是一个片段示例
class WCIntegrationProductIntegration extends WC_Query {
function __construct() {
add_action( 'woocommerce_custom_product_data', array( $this->_get_custom_product_data ) );
}
public function _get_custom_product_data() {
global $woocommerce;
$custom = array_merge(
array(
/*get custom tables and data*/
'table' = $table1,
'data' array($fields),
)
);
$product = array_merge(
array(
/*get productss and data*/
'table' = $table1,
'data' array($fields),
)
);
$the_query = new WP_Query();
}
}
new WCIntegrationProductIntegration();
但我不明白。我有点乱
我不知道是否有必要扩展 WC 类,使用 the_posts
过滤器向 WP_Post
对象添加自定义数据很简单。
原始示例:
add_filter( 'the_posts', function( $posts ) {
$posts[0]->custom = [ 'table1' => [] ];
return $posts;
});
add_action( 'the_post', function( $post ) {
global $product;
print_r( $post );
print_r( $product );
});
输出:
/*
WP_Post Object
(
[ID] => 99
[post_author] => 1
...
[custom] => Array
(
[table1] => Array
...
)
WC_Product_Simple Object
(
[id] => 99
[post] => WP_Post Object
(
[ID] => 99
[post_author] => 1
...
[custom] => Array
(
[table1] => Array
...
*/
我打赌 WooCommerce 也有自己的过滤器。
我有几个自定义表格,我正在使用带有 twig 的高级自定义字段 (acf)。这些字段存储在自定义表中。
例如:
custom_table1
、custom_table2
、custom_table1_table2_relation
等等。
它们可以在管理产品面板中进行编辑,并显示为与产品数据相关的对象。 现在我将把它们合并到一个关联数组中。
我有这个:
/*output*/
[post] => TimberPost Object (
[ImageClass] => TimberImage
[PostClass] => TimberPost
[object_type] => post
[class] => post-8 product type-product
[id] => 1
[post_author] => 1
[post_content] => description
[custom] => Array (
[table1-field1] => data
[table1-field2] => data
[table2_field1] => data
[table2_field] => data
)
)
我喜欢这个:
$products['products'] = array(
'id' => 1,
'post_content' => 'description',
'post_title' => 'title',
'and_so_on' => 'stuff',
[ 'custom' ] => array(
'table1' => array(
'data1' => 'content',
'data2' => 'content',
),
'table2' => array(
'data1' => 'content',
'data2' => 'content',
) /*and so on*/
)
);
我已经尝试扩展 WC_Class 并创建一个动作来在前面调用它们
这只是一个片段示例
class WCIntegrationProductIntegration extends WC_Query {
function __construct() {
add_action( 'woocommerce_custom_product_data', array( $this->_get_custom_product_data ) );
}
public function _get_custom_product_data() {
global $woocommerce;
$custom = array_merge(
array(
/*get custom tables and data*/
'table' = $table1,
'data' array($fields),
)
);
$product = array_merge(
array(
/*get productss and data*/
'table' = $table1,
'data' array($fields),
)
);
$the_query = new WP_Query();
}
}
new WCIntegrationProductIntegration();
但我不明白。我有点乱
我不知道是否有必要扩展 WC 类,使用 the_posts
过滤器向 WP_Post
对象添加自定义数据很简单。
原始示例:
add_filter( 'the_posts', function( $posts ) {
$posts[0]->custom = [ 'table1' => [] ];
return $posts;
});
add_action( 'the_post', function( $post ) {
global $product;
print_r( $post );
print_r( $product );
});
输出:
/* WP_Post Object ( [ID] => 99 [post_author] => 1 ... [custom] => Array ( [table1] => Array ... ) WC_Product_Simple Object ( [id] => 99 [post] => WP_Post Object ( [ID] => 99 [post_author] => 1 ... [custom] => Array ( [table1] => Array ... */
我打赌 WooCommerce 也有自己的过滤器。