首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WooCommerce中将自定义字段显示为外部链接

在WooCommerce中将自定义字段显示为外部链接
EN

Stack Overflow用户
提问于 2020-10-12 15:28:21
回答 1查看 527关注 0票数 1

我的代码显示了单个产品页面和WooCommerce存档页面上的自定义字段。

代码语言:javascript
复制
// Backend: Add Designer Fields
add_action( 'woocommerce_product_options_general_product_data', 'add_designer_fields' );
function add_designer_fields() {

// Designer Name Field
woocommerce_wp_text_input( array(
    'id' => '_designer_name',
    'label' => __( 'Designer Name', 'woocommerce' ),
));

// Designer URL Field
woocommerce_wp_text_input( array(
    'id' => '_designer_url',
    'label' => __( 'Designer URL', 'woocommerce' ),
));

}

// Backend: Save Designer Fields
add_action( 'woocommerce_admin_process_product_object', 'save_designer_fields' );
function save_designer_fields( $product ) {

// Save Designer Name Field
if( isset( $_POST['_designer_name'] ) ) {
    $product->update_meta_data( '_designer_name', sanitize_text_field( $_POST['_designer_name'] ) );
}

// Save Designer URL Field
if( isset( $_POST['_designer_url'] ) ) {
    $product->update_meta_data( '_designer_url', sanitize_text_field( $_POST['_designer_url'] ) );
}

}

// Display Designer Fields on single product pages and on archive pages
add_action('woocommerce_before_add_to_cart_form', 'display_designer_fields_value', 5 );
add_action('woocommerce_after_shop_loop_item', 'display_designer_fields_value', 0 );
function display_designer_fields_value() {
global $product;

if( $designer_name = $product->get_meta('_designer_name') )
    echo  '<span id="value-on-single-product" class="custom-field">' . __("", "woocommerce") . $designer_name . '</span>';

if( $designer_url = $product->get_meta('_designer_url') )
    echo  '<span id="value-on-single-product" class="custom-field">' . __("", "woocommerce") . $designer_url . '</span>';

}

  • 第一个字段显示名称
  • ,第二个显示外部链接.

这些字段正常工作。但是我需要名字字段作为页面上的链接。

例如:当添加产品时,经理输入设计人员的名称和到他的站点的链接。

在单个产品页和存档页上,设计器的名称显示为链接。当你点击它,你需要去到设计师的网站。

你能告诉我怎么做吗?我找不到正确的密码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 19:24:47

为此,您可以使用以下内容:

条件确保文本始终显示(如果不是空的话),如果designer url字段不是空的,则第二个条件使其成为一个可单击的链接,否则只会显示设计器名称。

HTML <a>目标属性

  • _blank在新窗口中打开链接文档,或者tab
  • _self在单击链接文档的同一帧中打开链接文档(这是default)
  • _parent,打开父frame
  • _top中的链接文档,打开窗口

全文中的链接文档)。

代码语言:javascript
复制
function display_designer_fields_value() {
    global $product;
    
    // Is a WC product
    if ( is_a( $product, 'WC_Product' ) ) {  
        // Get meta
        $designer_name = $product->get_meta( '_designer_name' );
        $designer_url = $product->get_meta( '_designer_url' );

        // NOT empty
        if ( ! empty( $designer_name ) ) {
            $output = '<span id="value-on-single-product" class="custom-field">';

            // NOT empty
            if ( ! empty ( $designer_url ) ) {
                $output .= '<a href="' . $designer_url . '" target="_blank">' . $designer_name . '</a></span>';
            } else  {
                $output .= $designer_name . '</span>';
            }
            
            echo $output;
        }
    }
}
add_action( 'woocommerce_before_add_to_cart_form', 'display_designer_fields_value' );
add_action( 'woocommerce_after_shop_loop_item', 'display_designer_fields_value' );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64320781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档