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