پنهان کردن قیمت از کاربر لاگین نکرده

kourosh

کاربر عضو
برای پنهان کردن قیمت کاربر در گفته کد زیر رو استفاده کنیم.

add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($price){
if(is_user_logged_in() ){
return $price;
}
else return '<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Login</a> or <a href="'.site_url('/wp-login.php?action=register&redirect_to=' . get_permalink()).'">Register</a> to see price!';
}​
کد:
کجا بزارم این کد رو؟

.

.

چه طوریه؟

تو کامنتا گفتن جنیوسی و اینا، ولی راه حل نداده!!

.

.

یه تبی رو معرفی کرده ولی من اصلا ندارم!!!

 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
خب معلومه که مربوط به توابع هست .

functions.php قالب

حالا اینکه کد کار بکنه یا نه یه مقوله جداست .

 

kourosh

کاربر عضو
توی function.php اینو گزاشتم که قیمت رو حذف کرد:

add_filter('woocommerce_get_price_html', 'my_alternate_button', 10, 1);

function my_alternate_button($price) {

if(is_user_logged_in() ){
return $price;
}
else
{
return '<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Login</a> or <a href="'.site_url('/wp-login.php?action=register&redirect_to=' . get_permalink()).'">Register</a> to see cart!';
}
}​
کد:
وقتی به جای قسمت های انگلیسی مثل "Login" فارسی می زارم، به این صورت

add_filter('woocommerce_get_price_html', 'my_alternate_button', 10, 1);

function my_alternate_button($price) {

if(is_user_logged_in() ){
return $price;
}
else
{
return '<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">وارد شويد</a> or <a href="'.site_url('/wp-login.php?action=register&redirect_to=' . get_permalink()).'">ثبت نام</a> کنيد تا قيمت را ببينيد!';
}
}​
کد:
این طوری نمایش میده:

or ���� �� ���� �� ������!

این رو چه طور حل کنم؟؟

.

با حلقه ترجمه هم حل نشد.

 
آخرین ویرایش توسط مدیر:

Mohammad

مدیر انجمن
پرسنل مدیریت
از یک ویرایشگر مانند notepad++ استفاده کنید و فایل رو به صورت utf-8 ذخیره کنید

 

kourosh

کاربر عضو
از یک ویرایشگر مانند notepad++ استفاده کنید و فایل رو به صورت utf-8 ذخیره کنید
حل شد.

چه طور همین function رو تبدیل به پلاگین یا گزینه ای توی تنظیمات سایت کنم؟

.

درباره اون دو تا مورد دیگه (دو تا لینک) که تو پست اول گذاشتم نظری ندارید؟

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
برای تبدیلش به پلاگین که اصلا کاری نداره ولی بستگی داره چه جور پلاگینی مد نظر دارید .

اگه فقط یه پلاگین بدون تنظیمات میخواید سه سوت کارشه که طرف نصب کنه و تغییرات روی سایتش اعمال بشه .

اما اگه میخواید که پنل هم داشته باشه مثلا طرف از داخل مدیریت وردپرس خودش بجای login هرچی دوست داشت بنویسه بحثش جداشت .

اما حالت اول یه پوشه بسازید به اسم دلخواه مثلا test. حالا یه فایل با همون اسم پوشه و پسوند php که میشه test.php رو داخل پوشه بسازید .

حالا کد زیر رو بزارید داخل فایل همون فایل php


کد:
<?php
/*
Plugin Name: test
Plugin URI: http://test.com
Description: توضیح تستی.
Version: 1.0
Author: test
Author URI: http://test
License: GPLv2 or later
*/
حالا همون کدی که تو فانکشن اضافه کردین رو از فانکشن پاک کنید و دقیقا بزارید زیر کد بالا .

حالا پوشه test رو زیپ کنید .

پلاگین شما آماده هست .

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


کد:
if (function_exists( 'is_woocommerce' )) {



}
در مورد اون دوتا لینک هم اصلا منظورتون واضح نیست .

 

kourosh

کاربر عضو
در مورد اون دوتا لینک هم اصلا منظورتون واضح نیست .
ظاهرا توی لینک اول، آپشن "Hide the prices for non-registered users" رو فقط درخواست دادن، راه حل اعلام نکردن.

توی لینک دوم هم گفته توی ووکامرس تب "Visibility Options" رو بزنید. من اصلا این تب رو ندارم.

.

برای تبدیلش به پلاگین که اصلا کاری نداره ولی بستگی داره چه جور پلاگینی مد نظر دارید .اگه فقط یه پلاگین بدون تنظیمات میخواید سه سوت کارشه که طرف نصب کنه و تغییرات روی سایتش اعمال بشه .

اما اگه میخواید که پنل هم داشته باشه مثلا طرف از داخل مدیریت وردپرس خودش بجای login هرچی دوست داشت بنویسه بحثش جداشت .

اما حالت اول یه پوشه بسازید به اسم دلخواه مثلا test. حالا یه فایل با همون اسم پوشه و پسوند php که میشه test.php رو داخل پوشه بسازید .

حالا کد زیر رو بزارید داخل فایل همون فایل php


کد:
<?php
/*
Plugin Name: test
Plugin URI: http://test.com
Description: توضیح تستی.
Version: 1.0
Author: test
Author URI: http://test
License: GPLv2 or later
*/
حالا همون کدی که تو فانکشن اضافه کردین رو از فانکشن پاک کنید و دقیقا بزارید زیر کد بالا .

حالا پوشه test رو زیپ کنید .

پلاگین شما آماده هست .

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


کد:
if (function_exists( 'is_woocommerce' )) {



}
توی فولدر پلاگینز یه فولدر با نام مثلا Omega ساختم و فایل Omega.php رو قرار دادم با محتوای زیر:


کد:
 <?php
/*
Plugin Name: test
Plugin URI: http://test.com
Description: توضیح تستی.
Version: 1.0
Author: test
Author URI: http://test
License: GPLv2 or later
*/
if (function_exists( 'is_woocommerce' )) {

    add_filter('woocommerce_get_price_html', 'my_alternate_button', 10, 1);

    function my_alternate_button($price) {

        if(is_user_logged_in() ){
            return $price;
        }
        else
        {
            remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
            return '<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">وارد شوید</a> یا <a href="'.site_url('/wp-login.php?action=register&redirect_to=' . get_permalink()).'">ثبت نام</a> کنید تا قیمت را ببینید!';
        }
    }
}
?>
وقتی فعال کردم این پیام رو داد:

افزونه هنگام فعال شدن٬ 1 نویسه از یک خروجی غیرمنتظره تولید کرد. اگر با پیغام خطای “headers already sent”٬ مشکلات مربوط به خوراک و یا مسائل دیگر مواجه شدید سعی کنید افزونه را غیرفعال یا حذف کنید.
و کار هم نکرد!

.

با حذف

if (function_exists( 'is_woocommerce' )) {

}
به کار افتاد.

 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
افزونه هنگام فعال شدن٬ 1 نویسه از یک خروجی غیرمنتظره تولید کرد. اگر با پیغام خطای “headers already sent”٬ مشکلات مربوط به خوراک و یا مسائل دیگر مواجه شدید سعی کنید افزونه را غیرفعال یا حذف کنید.
این ارور واسه اینه که شما توی خط اول قبل از <?php فاصله گذاشتید . منظورم اسپیس هست . اون اسپیس خط اول رو پاک کنید درست میشه .

 

kourosh

کاربر عضو
این ارور واسه اینه که شما توی خط اول قبل از <?php فاصله گذاشتید . منظورم اسپیس هست . اون اسپیس خط اول رو پاک کنید درست میشه .
اون Space رو برداشتم و دوباره فعال کردم. اروری نمیده، ولی کار هم نمی کنه!!

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
مگه نگفتین که با با حذف


کد:
                                                         if (function_exists( 'is_woocommerce' )) {



}
به کار افتاد ؟

خب شما با پاک کردن space هم باید کار کنه مشکلی نباید داشته باشه

 

kourosh

کاربر عضو
مگه نگفتین که با با حذف

کد:
                                                         if (function_exists( 'is_woocommerce' )) {



}
به کار افتاد ؟

خب شما با پاک کردن space هم باید کار کنه مشکلی نباید داشته باشه
بله. بدون "if (function_exists( 'is_woocommerce' ))" جواب میده.

تصور کردم اگه space رو بردارم، با وجود اون کد "if (function_exists( 'is_woocommerce' ))" هم کار بکنه.

.

این به این معناس که اون صفحه رو به عنوان صفحه ووکامرسی نمی شناسه. مثلا . چرا؟؟

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
این به این معناس که اون صفحه رو به عنوان صفحه ووکامرسی نمی شناسه. مثلا . چرا؟؟
متوجه منظورتون نشدم . مشکل صفحه مذکور چیه؟

 
بالا