• حل شده shooka

    (@shooka)


    سلام

    من میخوام در صفحه اطلاعات محصول ووکامرس یک بخشی اضافه کنم که کاربر بعد از اینکه اون محصول رو خرید وقتی وارد صفحه همون محصول شد یکسری اطلاعات نمایش داده بشه که فقط برای کاربرانی که اون محصول رو خریدن

    بخش دانلود ها در که پنل کاربری نمایش داده میشه my-account/downloads/

    چطور این رو فراخوانی کنم داخل صفحه خود محصول که کاربر بعد از اینکه محصول رو خرید بتونه به لینک های دانلود در صفحه خود محصول دسترسی داشته باشه

    در سایت های فارسی که آموزشی پیدا نکردم ولی تو سایت هاس خارجی این رو پیدا کنم برای کاربری که محصول رو خرید کرده

    global $current_user;

    if ( is_user_logged_in() && wc_customer_bought_product( $current_user->email, $current_user->ID, get_the_id() ) ) {
    // Do something
    echo ‘

    ‘ . __(“You have already purchased this product before”) . ”;
    }

در حال نمایش 5 پاسخ ( از کل 5)
  • مدیر Saeed Piri

    (@isaeedam)

    درود روز شما @shooka خوش.

    برای این منظور، کد زیر را آزمایش کنید؛ فقط فراموش نکنید پیش از هرکاری از وب‌سایت‌تون نسخۀ پشتیبان (Back-up) تهیه کنید.

    کد زیر را در پروندۀ functions.php پوسته فعال‌تون قرار بدید (اگر از پوستۀ فرزند استفاده کنید، این تغییر در به‌روزرسانی‌های تازه پوستۀ اصلی پابرجا خواهد ماند):

    add_action('woocommerce_product_meta_end', 'display_downloads_for_purchased_product');
    function display_downloads_for_purchased_product() {
    if (!is_user_logged_in()) return;

    global $product;
    $user_id = get_current_user_id();
    $product_id = $product->get_id();

    if (!wc_customer_bought_product($user_id, $product_id)) return;

    $downloads = wc_get_customer_available_downloads($user_id);

    if (!$downloads) return;

    echo '<div class="purchased-product-downloads" style="margin-top: 20px; padding: 15px; background: #f8f8f8;">';
    echo '<h3>دانلودهای شما</h3>';
    echo '<ul>';

    foreach ($downloads as $download) {
    if ($download['product_id'] == $product_id) {
    echo '<li>';
    echo '<a href="' . esc_url($download['download_url']) . '">';
    echo esc_html($download['download_name']);
    echo '</a>';
    echo '</li>';
    }
    }

    echo '</ul>';
    echo '</div>';
    }

    مانا باشید.

    آغازکننده موضوع shooka

    (@shooka)

    این کد رو میزارم داخل functions.php

    صفحات محصول این خطا میده و بالا نمیاد

    Fatal error: Uncaught ArgumentCountError: Too few arguments to function wc_customer_bought_product(), 2 passed

    مدیر Saeed Piri

    (@isaeedam)

    پوزش، پارامتر سوم مربوط به ایمیل کاربر، نیاز بود؛ این کد را جایگزین کد قبلی کنید:

    add_action('woocommerce_product_meta_end', 'display_downloads_for_purchased_product');
    function display_downloads_for_purchased_product() {
    if (!is_user_logged_in()) return;

    global $product;
    $user_id = get_current_user_id();
    $product_id = $product->get_id();
    $customer_email = wp_get_current_user()->user_email;

    if (!wc_customer_bought_product($customer_email, $user_id, $product_id)) return;

    $downloads = wc_get_customer_available_downloads($user_id);

    if (!$downloads) return;

    echo '<div class="purchased-product-downloads">';
    echo '<h3>دانلودهای شما</h3>';
    echo '<ul>';

    foreach ($downloads as $download) {
    if ($download['product_id'] == $product_id) {
    echo '<li><a href="' . esc_url($download['download_url']) . '">'
    . esc_html($download['download_name'])
    . '</a></li>';
    }
    }

    echo '</ul>';
    echo '</div>';
    }
    آغازکننده موضوع shooka

    (@shooka)

    تشکر از آقای پیری بابت وقتی که گذاشتین

    الان درست شد و دانلود ها رو نمایش میده

    مدیر Saeed Piri

    (@isaeedam)

    ارادتمندم.

    سربلند باشید @shooka

در حال نمایش 5 پاسخ ( از کل 5)

موضوع ‘درج اطلاعات دانلود در صفحه محصول&#8217 برای پاسخ های جدید بسته است.