Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据wordpress中产品的重量,以恒定的变量改变所有产品的价格?_Php_Wordpress_Woocommerce_Commodity - Fatal编程技术网

Php 如何根据wordpress中产品的重量,以恒定的变量改变所有产品的价格?

Php 如何根据wordpress中产品的重量,以恒定的变量改变所有产品的价格?,php,wordpress,woocommerce,commodity,Php,Wordpress,Woocommerce,Commodity,我想根据不同的重量改变产品的价格。例如白银,由于价格每天都在变化,因此价格将根据我插入的1gm白银的金额进行计算。 例如,一种产品为300gm,而1gm银的价格为2000美元,那么300*2000=600000美元。白银价格将每天变化,价格将根据所有产品的价格计算。 是否有任何插件可用于此,或者如果有一些代码更改,我可以做到这一点。帮我解决这个问题。 谢谢据我所知,没有插件。 由于价格每天都在变化,您应该按照Erik van de Ven的建议创建一个任务。这样,您就可以更新存储在数据库或文件中

我想根据不同的重量改变产品的价格。例如白银,由于价格每天都在变化,因此价格将根据我插入的1gm白银的金额进行计算。 例如,一种产品为300gm,而1gm银的价格为2000美元,那么300*2000=600000美元。白银价格将每天变化,价格将根据所有产品的价格计算。 是否有任何插件可用于此,或者如果有一些代码更改,我可以做到这一点。帮我解决这个问题。
谢谢

据我所知,没有插件。
由于价格每天都在变化,您应该按照Erik van de Ven的建议创建一个任务。这样,您就可以更新存储在数据库或文件中的价格。然后,您的wordpress代码可以从该db/文件中读取,其中的价格现在应该始终是最新的

这里有一个解决方案,您可以根据自己的需要进行修改,基本上它所做的是根据您输入的价格(每克当前价格)批量更新价格

步骤1
wp admin
上添加一个名为“价格更新”的新页面

步骤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(); ?>

现在访问该页面(
http://your-domain/price-update
)并更新价格。

我想雇佣一名能够为此创建cronjob任务的开发人员是最好的解决方案。cronjob任务(可能只是一个PHP文件)可以每天根据silver的当前值更新wordpress数据库中的所有产品价格。您不想使用插件,因为在这种情况下,脚本只会在有人访问您的网站时运行,并且您不想因此而降低页面加载速度。
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' );