如何根据wordpress中产品的重量改变所有产品的价格,其中包含一个常量变量?
How to change the price of all the products with a constant variable according the weight of the products in wordpress?
我想根据重量更改产品的价格,数量不定。例如白银,因为价格每天都在变化,所以价格将根据我插入的 1 克白银的数量来计算。
例如,一种产品是 300 克 ,而 1 克 银的价格是 2000 美元,然后 300*2000 = 600,000 美元。白银价格每日变动,所有商品均按该价格计算。
是否有任何可用的插件,或者如果可以通过一些代码更改我可以做到这一点。帮我解决这个问题。
谢谢
据我所知,没有插件。
由于价格每天都在变化,您应该按照 Erik van de Ven 的建议创建一个 cronjob 任务。有了它,您可以更新存储在数据库或文件中的价格。然后您的 wordpress 代码可以从 db/file 中读取,现在价格应该始终是最新的
这是一个解决方案,您可以根据需要对其进行修改,基本上它的作用是根据您输入的价格(每克当前价格)批量更新价格。
步骤 1
在 wp-admin
上添加一个名为 "Price Update"
的新页面
步骤 2
在名为 page-price-update.php
的主题目录中创建一个自定义模板,并将以下代码片段粘贴到该模板文件中
<?php get_header(); ?>
<?php if( is_admin() ) :?>
<form action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" >
<p class="form-row">
<label for="gram_price">Current Price of 1 Gram</label>
<input type="number" name="gram_price" value="" />
</p>
<p class="form-row">
<input type="hidden" name="action" value="bulk_update_price" />
<input type="submit" value="Update Now" />
</p>
</form>
<?php else : ?>
<h3>You need to be an Admin to access this page.!</h3>
<?php endif; ?>
<?php get_footer(); ?>
步骤 3
将以下代码片段放在您的主题 functions.php
function bulk_update_price() {
if( isset( $_POST["gram_price"] ) && is_numeric( $_POST["gram_price"] ) ) {
// get all products
$posts = get_posts( array('post_type'=>'product', 'posts_per_page'=>-1 ) );
if( count( $posts ) > 0 ) {
// iterare through each product
foreach ( $posts as $post ) {
setup_postdata( $post );
wc_setup_product_data( $post );
$product = wc_get_product( $post->ID );
if( $product->has_weight() ) {
// get the current price entered i the form field
$current_price = floatval( $_POST["gram_price"] );
// get the product weight
$weight = $product->get_weight();
// well now set the price
$product->set_price( $weight * $current_price );
}
}
}
}
echo "<h1>Prices updated Successfully.!</h1>";
}
add_action ( 'wp_ajax_bulk_update_price', 'bulk_update_price' );
add_action ( 'wp_ajax_nopriv_bulk_update_price', 'bulk_update_price' );
现在访问该页面 (http://your-domain/price-update
) 并更新价格。
我想根据重量更改产品的价格,数量不定。例如白银,因为价格每天都在变化,所以价格将根据我插入的 1 克白银的数量来计算。 例如,一种产品是 300 克 ,而 1 克 银的价格是 2000 美元,然后 300*2000 = 600,000 美元。白银价格每日变动,所有商品均按该价格计算。 是否有任何可用的插件,或者如果可以通过一些代码更改我可以做到这一点。帮我解决这个问题。 谢谢
据我所知,没有插件。 由于价格每天都在变化,您应该按照 Erik van de Ven 的建议创建一个 cronjob 任务。有了它,您可以更新存储在数据库或文件中的价格。然后您的 wordpress 代码可以从 db/file 中读取,现在价格应该始终是最新的
这是一个解决方案,您可以根据需要对其进行修改,基本上它的作用是根据您输入的价格(每克当前价格)批量更新价格。
步骤 1
在 wp-admin
上添加一个名为 "Price Update"
步骤 2
在名为 page-price-update.php
的主题目录中创建一个自定义模板,并将以下代码片段粘贴到该模板文件中
<?php get_header(); ?>
<?php if( is_admin() ) :?>
<form action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" >
<p class="form-row">
<label for="gram_price">Current Price of 1 Gram</label>
<input type="number" name="gram_price" value="" />
</p>
<p class="form-row">
<input type="hidden" name="action" value="bulk_update_price" />
<input type="submit" value="Update Now" />
</p>
</form>
<?php else : ?>
<h3>You need to be an Admin to access this page.!</h3>
<?php endif; ?>
<?php get_footer(); ?>
步骤 3
将以下代码片段放在您的主题 functions.php
function bulk_update_price() {
if( isset( $_POST["gram_price"] ) && is_numeric( $_POST["gram_price"] ) ) {
// get all products
$posts = get_posts( array('post_type'=>'product', 'posts_per_page'=>-1 ) );
if( count( $posts ) > 0 ) {
// iterare through each product
foreach ( $posts as $post ) {
setup_postdata( $post );
wc_setup_product_data( $post );
$product = wc_get_product( $post->ID );
if( $product->has_weight() ) {
// get the current price entered i the form field
$current_price = floatval( $_POST["gram_price"] );
// get the product weight
$weight = $product->get_weight();
// well now set the price
$product->set_price( $weight * $current_price );
}
}
}
}
echo "<h1>Prices updated Successfully.!</h1>";
}
add_action ( 'wp_ajax_bulk_update_price', 'bulk_update_price' );
add_action ( 'wp_ajax_nopriv_bulk_update_price', 'bulk_update_price' );
现在访问该页面 (http://your-domain/price-update
) 并更新价格。