【问题标题】:Show custom field as external link in WooCommerce在 WooCommerce 中将自定义字段显示为外部链接
【发布时间】:2021-01-26 22:33:11
【问题描述】:

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

// 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>';

}
  • 第一个字段显示名称
  • 第二个外部链接。

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

例如:添加产品时,经理输入设计师的姓名和指向其网站的链接。

在单品页面和存档页面,设计师的名字显示为一个链接。点击后需要进入设计师的网站。

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

【问题讨论】:

    标签: php wordpress woocommerce hyperlink custom-fields


    【解决方案1】:

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

    条件确保文本始终显示(如果不为空),第二个条件如果设计器 url 字段不为空,则使其成为可点击链接,否则将仅显示设计器名称。

    HTML &lt;a&gt;目标属性

    • _blank 在新窗口或标签页中打开链接的文档
    • _self 在被点击的同一框架中打开链接的文档(这是默认设置)
    • _parent 在父框架中打开链接文档
    • _top 在整个窗口中打开链接的文档
    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' );
    

    【讨论】:

    • 非常感谢您的回答和帮助!一切都很好!
    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2018-09-17
    • 2019-06-25
    • 2014-02-11
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多