گزینه ها
Reza.irdev

محدود کردن بخش خاصی از محتوای پست در وردپرس

PHP

توسط Reza.irdev در 1 ماه پیش
213934 هفته پیش
سلام دوستان Penguin
امروز داشتم روی یه پروژه وردپرس کار میکردم. میخواستم یه بخشی از محتوای پست رو زمانی نشون کاربر بدم که یه محصول ووکامرس رو خریداری کرده باشه. تصمیم گرفتم برای این کار یه شورت کد بنویسم که خیلی خوب هم کار میکرد. کد رو میزارم شاید بدرد شما هم بخوره.
کد
/**
* [wcr_shortcode description]
* @param  array  pid    product id from short code
* @return content          shortcode content if user bought product
*/
function wcr_shortcode($atts = [], $content = null, $tag = '')
{
    // normalize attribute keys, lowercase
    $atts = array_change_key_case((array) $atts, CASE_LOWER);

    // start output
    $o = '';

    // start box
    $o .= '<div class="wcr-box">';

    $current_user = wp_get_current_user();

    if ( current_user_can('administrator') || wc_customer_bought_product($current_user->email, $current_user->ID, $atts['pid'])) {
        // enclosing tags
        if (!is_null($content)) {
            // secure output by executing the_content filter hook on $content
            $o .= apply_filters('the_content', $content);
        }

    } else {
        // User doesn't bought this product and not an administator
    }
    // end box
    $o .= '</div>';

    // return output
    return $o;
}

نحوه استفاده


کد
[wcr pid="72"]
This content only show for users that bought product with the id #72
[/wcr]

کد رو میتونید داخل فایل functions.php پوسته تون کپی کنید.
از برنامه نویسی لذت ببرید Wink
پاسخ
سلام
آقا ممنون بابت این کد خیلی کاربردی هست.
فقط یه سئوال من کدها رو در فایل فانکشن قالب قرار دادم و بعد آی دی شرت کد رو به آی دی محصول تغییر دادم و پست رو ارسال کردم اما کار نکرد.
باید کار خاصی بشه؟
پاسخ
سلام.
احتمالا اکشن رو اضافه نکردید:
کد
function wcrn_shortcodes_init()
{
    add_shortcode('wcrn', 'wcrn_shortcode');
}

add_action('init', 'wcrn_shortcodes_init');
برای wcr هم همین کارو انجام بدید Smile
پاسخ