Woocommerce Price Text

时间:2015-04-11 作者:emailsforben

我想在我的产品价格之后展示一下,价格是“每人”还是“每组”。

我为两者都创建了一个自定义字段,因此,例如,如果选中自定义字段“price\\u per\\u person”,则价格将显示为100美元per person 或者,如果勾选了自定义字段“price\\u per\\u person”,则价格将显示为100美元per group

我从下面的过滤器开始,但是我为确定是否选择了自定义字段所做的所有查询都没有起作用。

add_filter( \'woocommerce_get_price_html\', \'custom_price_html\', 100, 2 );
function custom_price_html( $price, $product ){
    $price = $price . \' per person\';
    return apply_filters( \'woocommerce_get_price\', $price );
}
谢谢!

使用输出更新

Array
(
    [_edit_last] => Array
        (
            [0] => 1
        )

    [_edit_lock] => Array
        (
            [0] => 1428754721:1
        )

    [_visibility] => Array
        (
            [0] => visible
        )

    [_stock_status] => Array
        (
            [0] => instock
        )

    [total_sales] => Array
        (
            [0] => 0
        )

    [_downloadable] => Array
        (
            [0] => no
        )

    [_virtual] => Array
        (
            [0] => no
        )

    [_regular_price] => Array
        (
            [0] => 79
        )

    [_sale_price] => Array
        (
            [0] => 
        )

    [_purchase_note] => Array
        (
            [0] => 
        )

    [_featured] => Array
        (
            [0] => no
        )

    [_weight] => Array
        (
            [0] => 
        )

    [_length] => Array
        (
            [0] => 
        )

    [_width] => Array
        (
            [0] => 
        )

    [_height] => Array
        (
            [0] => 
        )

    [_sku] => Array
        (
            [0] => 
        )

    [_product_attributes] => Array
        (
            [0] => a:0:{}
        )

    [_sale_price_dates_from] => Array
        (
            [0] => 
        )

    [_sale_price_dates_to] => Array
        (
            [0] => 
        )

    [_price] => Array
        (
            [0] => 79
        )

    [_sold_individually] => Array
        (
            [0] => 
        )

    [_manage_stock] => Array
        (
            [0] => no
        )

    [_backorders] => Array
        (
            [0] => no
        )

    [_stock] => Array
        (
            [0] => 
        )

    [_upsell_ids] => Array
        (
            [0] => a:0:{}
        )

    [_crosssell_ids] => Array
        (
            [0] => a:0:{}
        )

    [_product_image_gallery] => Array
        (
            [0] => 
        )

    [slide_template] => Array
        (
            [0] => 
        )

    [_thumbnail_id] => Array
        (
            [0] => 63
        )

    [_wpb_vc_js_status] => Array
        (
            [0] => false
        )

    [_wpb_vc_js_interface_version] => Array
        (
            [0] => 0
        )

    [price_per_person] => Array
        (
            [0] => 1
        )

    [_price_per_person] => Array
        (
            [0] => field_5528e5f80bad0
        )

    [price_per_group] => Array
        (
            [0] => 0
        )

    [_price_per_group] => Array
        (
            [0] => field_5528e6580bad1
        )

)

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

只需使用$product 参数获取自定义字段值,并确定要返回的内容:

function custom_price_html( $price, $product ) {
    if ( ( int ) get_post_meta( $product->id, \'price_per_person\', true ) )
        $price .= \' per person\';
    elseif ( ( int ) get_post_meta( $product->id, \'price_per_group\', true ) )
        $price .= \' per group\';

    $price .= \'[filtered]\'; // For debugging - if you don\'t see this next to your prices, the filter isn\'t even running, hence why it\'s not working!

    return $price;
}

add_filter( \'woocommerce_get_price_html\', \'custom_price_html\', 500, 2 );
这是假设您将每个“已检查”状态保存在其自己的元键下,如果某个状态未检查,则该字段不存在或为“空”。

实际上,使用一个元字段可能更有意义price_type, 然后保存值per_personper_group 取决于选中的状态(因为价格不能同时是两种类型,对吗?)。

Update: 要调试这种情况,请将其放置在functions.php, 在浏览器中查看产品,然后使用输出更新您的问题:

function wpse_183901_debug_product() {
    if ( is_singular( \'product\' ) ) {
        echo \'<pre>\';
        echo esc_html( print_r( get_post_meta( get_queried_object_id() ), true ) );
        echo \'</pre>\';
        exit;
    }
}

add_action( \'template_redirect\', \'wpse_183901_debug_product\' );

结束

相关推荐

擦除WP数据库和文件夹的PHP脚本

在过去的几个小时里,我一直在试图弄清楚这一点,主要是通过使用一些在线找到的代码片段,但由于我的PHP技能已经相当生疏,所以我无法将其组合起来。如果有人愿意花几分钟把这篇文章写出来,或者写一篇博文,我会非常感激。因此,我们的想法是,通过FTP将文件上传到Wordpress安装的文件夹中,在访问该文件后,应该执行以下操作:从wp config获取数据库凭据。php使用凭据彻底擦除数据库,删除它所在的Wordpress安装文件夹。我认为这对于从服务器上删除旧的Wordpress安装非常有用,所以我很惊讶我在任何