Как я могу найти связанный идентификатор курса learndash из объекта продукта woocommerce?

#php #wordpress #woocommerce #wordpress-plugin-creation

#php #wordpress #woocommerce #wordpress-создание плагина

Вопрос:

У меня woocommerce интегрирован с LearnDash. Теперь я пытаюсь получить выбранный курс (связанный курс) из объекта продукта woocommerce или любым другим способом (по идентификатору продукта woocommerce). Должен быть способ, как покупка продукта открывает курс. Просто не могу его найти.

Кто-нибудь может помочь?

Ответ №1:

Связанные данные курса хранятся как post_meta в продукте WooCommerce.

Вы можете увидеть это в wp-content/plugins/learndash-woocommerce/learndash_woocommerce.php строка 150 или около того, когда функция render_course_selector() обновляет мету post с помощью ‘_related_courses’, включен ли ее ключ в $ _POST при сохранении продукта.

Для моего варианта использования мне нужно было получить его в исходящих электронных письмах, поэтому я сделал это:

 function my_plugin_add_course_link_to_emails($item_id, $item, $order, $plain_text)
{
    $html = '<div class="email-course-link">';
    $related_courses = get_post_meta($item->get_product_id(), '_related_course');
    foreach ($related_courses as $related_course) {
        $id = $related_course[0];
        $url = learndash_get_course_url($id);
        $html .= '<a href="' . $url . '">Course Link</a>';
    }
    $html .= '</div>';
    echo $html;
}
add_action('woocommerce_order_item_meta_start', 'my_plugin_add_course_link_to_emails', 10, 4);
  

Волшебная строка, которая отвечает на ваш вопрос, это:

 $related_courses = get_post_meta($item->get_product_id(), '_related_course');
  

Любой вариант из приведенных выше должен помочь вам.

Комментарии:

1. Хорошее объяснение, большое вам спасибо! Единственное, что я изменил, это то, что я добавил ‘true’ в качестве атрибута в функции get_post_meta, чтобы получать единственное значение вместо массива.

2. Могу ли я получить связанный продукт на основе идентификатора курса learndash?