* Woocommcerceは$post_type === 'product'
あなたがフックを経由して、このファイルを含めるその後
class My_Product_Data_Store_CPT extends WC_Product_Data_Store_CPT implements WC_Object_Data_Store_Interface, WC_Product_Data_Store_Interface {
/**
* Method to read a product from the database.
* @param WC_Product
*/
public function read(&$product) {
$product->set_defaults();
if (! $product->get_id() || ! ($post_object = get_post($product->get_id())) || 'product' !== $post_object->post_type) {
//throw new Exception(__('Invalid product.', 'woocommerce'));
}
$id = $product->get_id();
$product->set_props(array(
'name' => $post_object->post_title,
'slug' => $post_object->post_name,
'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp($post_object->post_date_gmt) : null,
'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp($post_object->post_modified_gmt) : null,
'status' => $post_object->post_status,
'description' => $post_object->post_content,
'short_description' => $post_object->post_excerpt,
'parent_id' => $post_object->post_parent,
'menu_order' => $post_object->menu_order,
'reviews_allowed' => 'open' === $post_object->comment_status,
));
$this->read_attributes($product);
$this->read_downloads($product);
$this->read_visibility($product);
$this->read_product_data($product);
$this->read_extra_data($product);
$product->set_object_read(true);
}
}
にそれを上書きすることができますチェックし、ハードに使用。
function my_woocommerce_data_stores($stores) {
require_once PLUGIN_PATH . '/includes/classes/class-data-store-cpt.php';
$stores['product'] = 'MY_Product_Data_Store_CPT';
return $stores;
}
add_filter('woocommerce_data_stores', 'my_woocommerce_data_stores');
使用するカスタムメタから価格を提供するために、このフィルタ。あなたはhttp://localhost/wordpress/cart/?add-to-cart=244ようなURLのPARAM add-to-cart=[POST_ID]
を使用してカートに追加しようとした場合
add_filter('woocommerce_product_get_price', 'my_woocommerce_product_get_price', 10, 2);
function my_woocommerce_product_get_price($price, $product) {
if ($product->get_id() == 815) {
$price = 10;
}
return $price;
}
今カートにアイテムを追加します。
ボタンを使用してカートに追加することもできます。
<form action="" method="post">
<input name="add-to-cart" type="hidden" value="<?php the_ID(); ?>" />
<input name="quantity" type="number" value="1" min="1" />
<input name="submit" type="submit" value="Add to cart" />
</form>
私のためには機能しませんでしたが、代わりにカスタム製品タイプを使用しました。あなたの助けてくれてありがとう: –
最新バージョン3.0のように、私のために働かなかった。*たくさんのものが変更されました。それでも解決策を探しています。 –