Я добавил новое настраиваемое поле «Связанный продукт» в разделе «продает» в разделе администратора 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…', '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 );