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

PHP

توسط reza-irdev در 1 سال پیش
2 459 3 1 سال پیش
reza-irdevbehroozesd
2

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

/**
 * [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 پوسته تون کپی کنید. از برنامه نویسی لذت ببرید ;)

1

سلام آقا ممنون بابت این کد خیلی کاربردی هست. فقط یه سئوال من کدها رو در فایل فانکشن قالب قرار دادم و بعد آی دی شرت کد رو به آی دی محصول تغییر دادم و پست رو ارسال کردم اما کار نکرد. باید کار خاصی بشه؟

2

سلام. احتمالا اکشن رو اضافه نکردید:

function wcrn_shortcodes_init()
{
    add_shortcode('wcrn', 'wcrn_shortcode');
}

add_action('init', 'wcrn_shortcodes_init');

برای wcr هم همین کارو انجام بدید :)

0

ممنون... چک می کنم حتما...

خوش آمدید

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

لطفا ابتدا لاگین کنید