Как настроить внешние продукты в woocommerce, чтобы эта страница сведений о продукте была обойдена?

Я хочу настроить веб-сайт woocommerce с внешними продуктами. Я хочу, чтобы клиент перешел на основной веб-сайт продукта (внешняя ссылка), нажав на продукт, не показывая ему страницу сведений о продукте.

Обойдите страницу сведений о продукте, щелкнув миниатюру продукта и открыв внешнюю ссылку в новой вкладке.

Как я могу это сделать ?


person Damon    schedule 14.11.2017    source источник
comment
Что вы пробовали до сих пор?   -  person Sulthan Allaudeen    schedule 14.11.2017
comment
я понятия не имею, как это сделать!! Любое направление, которое вы можете указать мне, было бы полезно.   -  person Damon    schedule 14.11.2017


Ответы (1)


Вот как работает этот код: я переопределяю ссылку на циклический продукт по умолчанию и связываю ее с моим собственным настраиваемым полем, которое появляется на вкладке «Общие», когда вы редактируете продукт под названием «Внешний URL». При вводе внешнего URL-адреса ссылка перенаправит пользователя на другой веб-сайт, а если внешний URL-адрес отсутствует, он перенаправит пользователя на страницу сведений. Я взял часть этого кода из замечательной статьи о создании пользовательских поля продукта.

Вставьте этот код в файл functions.php.

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
add_action( 'woocommerce_before_shop_loop_item', 'modify_woocommerce_template_loop_product_link_open', 10 );

// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );

function woo_add_custom_general_fields() {
    global $woocommerce, $post;

    echo '<div class="options_group">';

    woocommerce_wp_text_input( 
        array( 
            'id'          => '_external_url', 
            'label'       => __( 'External URL', 'woocommerce' ), 
            'placeholder' => 'http://',
            'desc_tip'    => 'true',
            'description' => __( 'Enter the external URL here.', 'woocommerce' ) 
        )
    );

    echo '</div>';
}

function woo_add_custom_general_fields_save( $post_id ){
    $woocommerce_text_field = $_POST['_external_url'];

    if( !empty( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_external_url', esc_attr( $woocommerce_text_field ) );

}

function modify_woocommerce_template_loop_product_link_open() {
    $product_url =  get_post_meta( get_the_ID(), '_external_url', true );

    if( empty( $product_url) )
        echo '<a href="' . esc_url( get_the_permalink() ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
    else
        echo '<a href="' . esc_url( $product_url ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
}
person Andrew Schultz    schedule 14.11.2017
comment
Именно то, что я искал. Спасибо, Эндрю. - person Damon; 14.11.2017
comment
Рад, что смог помочь :) Если вы хотите улучшить ответ, вы можете добавить дополнительную проверку, чтобы убедиться, что URL-адрес введен в текстовое поле. В настоящее время он будет принимать любую строку в качестве входных данных. - person Andrew Schultz; 14.11.2017
comment
Да, конечно, позвольте мне также изучить это. - person Damon; 14.11.2017