如果为空,则隐藏自定义元数据

时间:2019-01-14 作者:Southerndavis

我为WooCommerce产品创建了一个自定义字段。

我正在使用以下代码创建

// ADD CUSTOM WOO DATA
add_action(\'woocommerce_product_options_general_product_data\', \'woocommerce_product_custom_fields\');

// Save Fields
add_action(\'woocommerce_process_product_meta\', \'woocommerce_product_custom_fields_save\');


function woocommerce_product_custom_fields()
{
    global $woocommerce, $post;
    echo \'<div class="product_custom_field">\';
    // Custom Product Text Field
    woocommerce_wp_text_input(array(
        \'id\' => \'_sales_email\',
        \'placeholder\' => \'\',
        \'label\' => __(\'Sales Email Link\', \'woocommerce\'),
        \'desc_tip\' => \'true\'
    ));

    echo \'</div>\';
}


function woocommerce_product_custom_fields_save($post_id)
{
    // Custom Product Text Field
    $woocommerce_custom_product_text_field = $_POST[\'_sales_email\'];
    if (!empty($woocommerce_custom_product_text_field))
        update_post_meta($post_id, \'_sales_email\', esc_attr($woocommerce_custom_product_text_field));
}
代码运行良好,并在产品页面上显示数据。

我通过一个短代码显示数据。

<div class="dbtn_sales"><a href="mailto:[foobar name=_sales_email]">Email Sales</a></div>
我的问题是hiding 字段为空时的数据。。

我试过了

if( get_field(\'_sales_email\') )
{
    //echo the_field(\'_sales_email\');
}
else
{
    echo "<style>.dbtn_sales{display:none !important;}</style>";
}
但我什么也做不到。。。有人能给我指出正确的方向吗?

1 个回复
SO网友:Krzysiek Dróżdż

AFAIR公司get_field() 功能随ACF提供,WP中没有内置此类功能。

根据您的代码,您在站点上使用ACF插件并不明显,因此可能无法正常工作。

但是,既然您已经使用本机WP函数来设置元数据,那么最好也使用本机WP函数来获取该值。

此外,我不会使用CSS隐藏该按钮。我会将您的代码(负责打印按钮的部分)更改为:

<?php if ( get_post_meta(get_the_ID(), \'_sales_email\', true) ) : ?>
<div class="dbtn_sales"><a href="mailto:[foobar name=_sales_email]">Email Sales</a></div>
<?php endif; ?>
还有。。。如果该值来自用户输入,那么最好确保正确转义该值:

<?php if ( get_post_meta(get_the_ID(), \'_sales_email\', true) ) : ?>
<div class="dbtn_sales"><a href="mailto:<?php esc_attr( get_post_meta(get_the_ID(), \'_sales_email\', true) ); ?>">Email Sales</a></div>
<?php endif; ?>

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在