2016-09-17 3 views
3

У меня есть сайт woocommerce. Сначала я хотел бы добавить настраиваемое поле на страницах продукта администратора, чтобы установить exernal url , который я буду использовать на страницах продуктов категории Архивы.Добавление пользовательской внешней ссылки на страницы категорий архивов

Также я хотел бы, чтобы в идеале было это настраиваемое поле на страницах настроек продукта admin. Но код я меняю ссылку на всех страницах архивов.

На данный момент у меня есть этот код, который не делает то, что мне нужно:

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 . '">'; 

} 

Как я могу сделать, чтобы заставить его работать только на категории архивных страниц?

Благодаря

ответ

4

Шаг1 - Создание настраиваемого поля на страницах администратора продукта настройки METABOX:

enter image description here

// 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 файле Вашего активного ребенка темы (или темы), или также в любой файл плагина.

Этот код протестирован annd works

 Смежные вопросы

  • Нет связанных вопросов^_^