我有一个woocommerce网站。首先,我想在管理产品页面上添加一个自定义字段,以设置我将在我的档案类别产品页面上使用的 exernal url 。
另外,我希望在我的管理产品页面设置元数据中拥有此自定义字段。但是代码我已经更改了所有档案页面上的链接。
现在我的代码没有做我需要的代码:
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
add_action( 'woocommerce_before_shop_loop_item', 'mycode_woocommerce_template_loop_product_link_open', 20 );
function mycode_woocommerce_template_loop_product_link_open() {
$url = 'https://www.some_domain.com/';
echo '<a href="' . $url . '">';
}
如何才能使其仅适用于类别档案页面?
由于
答案 0 :(得分:4)
步骤1 - 在管理产品页面设置元框中创建自定义字段:
// Inserting a Custom Admin Field
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_text_field_create' );
function add_custom_text_field_create() {
echo '<div class="options_group">';
woocommerce_wp_text_input( array(
'type' => 'text',
'id' => 'extern_link',
'label' => __( 'External Link', 'woocommerce' ),
'placeholder' => '',
'description' => __( 'Insert url', 'woocommerce' ),
) );
echo '</div>';
}
// Saving the field value when submitted
add_action( 'woocommerce_process_product_meta', 'add_custom_field_text_save' );
function add_custom_field_text_save( $post_id ){
$wc_field = $_POST['extern_link'];
if( !empty( $wc_field ) )
update_post_meta( $post_id, 'extern_link', esc_attr( $wc_field ) );
}
步骤2 - 仅通过产品类别归档页面中的自定义元值替换链接。
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open');
add_action( 'woocommerce_before_shop_loop_item', 'custom_wc_template_loop_product_link_open', 10 );
function custom_wc_template_loop_product_link_open() {
// For product category archives pages only.
if (is_product_category()) {
// You get here your custom link
$link = get_post_meta(get_the_ID(), 'extern_link', true);
echo '<a href="' . $link . '" class="woocommerce-LoopProduct-link">';
//For the other woocommerce archives pages
} else {
echo '<a href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link">';
}
}
代码进入活动子主题(或主题)的function.php文件或任何插件文件中。
此代码经过测试和工作