Как получить URL связанного продукта из массива в Woocommerce? - PullRequest
0 голосов
/ 10 июня 2019

Я добавил новое настраиваемое поле «Связанный продукт» в разделе «продает» в разделе администратора Woocommerce.

Я использовал следующий код (кредит TheYaXxE):

// Display the custom fields in the "Linked Products" section
add_action( 'woocommerce_product_options_related', 'woocom_linked_products_data_custom_field' );

// Save to custom fields
add_action( 'woocommerce_process_product_meta', 'woocom_linked_products_data_custom_field_save' );


// Function to generate the custom fields
function woocom_linked_products_data_custom_field() {
    global $woocommerce, $post;
?>
<p class="form-field">
    <label for="upsizing_products"><?php _e( 'Upsizing Product', 'woocommerce' ); ?></label>
    <select class="wc-product-search" multiple="multiple" style="width: 50%;" id="upsizing_products" name="upsizing_products[]" data-placeholder="<?php esc_attr_e( 'Search for a product&hellip;', 'woocommerce' ); ?>" data-action="woocommerce_json_search_products_and_variations" data-exclude="<?php echo intval( $post->ID ); ?>">
        <?php
            $product_ids = get_post_meta( $post->ID, '_upsizing_products_ids', true );

            foreach ( $product_ids as $product_id ) {
                $product = wc_get_product( $product_id );
                if ( is_object( $product ) ) {
                    echo '<option value="' . esc_attr( $product_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $product->get_formatted_name() ) . '</option>';
                }
            }
        ?>
    </select> <?php echo wc_help_tip( __( 'Select Products Here.', 'woocommerce' ) ); ?>
</p>

<?php
}

// Function the save the custom fields
function woocom_linked_products_data_custom_field_save( $post_id ){
    $product_field_type =  $_POST['upsizing_products'];
    update_post_meta( $post_id, '_upsizing_products_ids', $product_field_type );
}

Хорошие новости, все отлично работает!

Однако сейчас я пытаюсь отобразить выбранный связанный продукт на странице продукта, чтобы клиенты могли его увидеть. Я хотел бы показать только URL. У меня вопрос, как я могу получить только URL выбранного продукта?

Я использовал следующую строку, но она всегда будет возвращать пустой массив:

$custom_field_url = get_post_meta( $product->get_id(), '_bigger_size_url', true );

Также попробовал следующее, но он нашел текущий продукт, а не связанный:

$custom_field_url = get_permalink( $product->get_id(), '_bigger_size_url', true );

1 Ответ

0 голосов
/ 14 июня 2019

Как я понял, вам нужен URL продуктов, и у вас есть идентификаторы.
Поскольку продукты WooCommerce имеют «пользовательский тип публикации» в WordPress, вы можете использовать функцию get_permalink () , чтобы получить URL, как показано ниже:

$product_url = get_permalink( $product->get_id() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...