کوئری از سفارشات ووکامرس

بسم الله

سلام

نمونه زیر کوئری از سفارشات ووکامرس میگیره،اگر توی wp_query مقدار post_type رو shop_order بذارید ، قانونا باید برگردونه ، اما این اتفاق نمیفته،چون مقدار post_status این CPT مثل پستها نیست،کد زیر این کار رو انجام میده:

[code]
$wc= new WP_Query(array(
'post_type' => 'shop_order',
'post_status' =>'wc-completed' // wc-completed , wc-cancelled
));
if($wc->have_posts()){
while($wc->have_posts()) {
$wc->the_post();
the_title();
}
}
wp_reset_query();
[/code]

 

ارور جالب وردپرس،خطا روی خود جی کوئری

بسم الله الرحمن الرحیم.

با یه خطای جالب بر خوردم امروز،سایت کلی ارور JavaScript داشت،که یکی از ارورهاش دقیقا خود جی کوئری بود.

مضمون خطا این بود:

[code lang="js"]
Error: Syntax error, unrecognized expression: http://#

throw new Error("Syntax error, unrecognized expression: " + a)

[/code]

و همچنین خطاهای بعدش:

[code lang="js"]
TypeError: jQuery(...).superslides is not a function

jQuery('.max-hero').superslides({

TypeError: jQuery(...).doubleTapToGo is not a function

jQuery( '#nav li:has(ul)' ).doubleTapToGo();

TypeError: jQuery(...).flexslider is not a function

jQuery('.flexslider').flexslider();

[/code]

طبق تجربه ظاهرا یا جی کوئری یا کتابخونه های مربوطه که توی کد هست درست لود نشدند.

این خط توجه مو به خودش جلب کرد:  http://#

سورس سایت رو آوردم و دنبال همین تیکه گشتم،و پیدا کردم! این مربوط به  مقدار href توی یه المنت a بود،مقدار روی توی وردپرس و از مدیریت یه مقدار صحیح دادم و تمام اون خطاهای بالا رفع شد!

اما علت این خط چی بود؟آیا درسته به خاطر یه سهل انگاری کوچک کل سایت به دردسر بیفته؟

 

ریدایرکت در وردپرس و رفع خطای headers already sent

بسم الله الرحمن الرحیم.
جایی که از وردپرس استفاده میشه ، استفاده از توابعی php ی مثل Header کار صحیحی شاید نباشه،چرا؟چون هر بستر توسعه ای راه هایی برای راحتی کار کدنویس تدارک دیده،مثل کلاس wpdb و یا wp_redirect یا موارد مشابه.پس بهتره که از مسیر تدارک دیده شده حرکت کنیم تا کارمون استاندارد باشه.
خب این پست برای این نوشته شده که نحوه رفع خطای زیر رو بده:

[code]
Warning: Cannot modify header information - headers already sent by (output started at ...
[/code]

علت این خطا موارد متعددی میتونه باشه،گاها با ذخیره فایلهای مربوطه به صورت utf8 with out BOM این خطا رفع میشه.

اما مواقعی هست که نیاز به ریدارکت و یا هدایت کاربر دارید،قطعا طبق توصیه اول نیاز هست از تابع wp_redirect یا wp_safe_redirect استفاده بشه،این دوتا تابع هم از تایع header در PHP استفاده می کنند که ید طویلی در این نوع خطاها داره!

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

 

اما راه حل.

روش رفع خطای سشن در وردپرس

[code lang="php"]
function ob_start_at_wp_init() {
ob_start();
}
add_action('init', 'ob_start_at_wp_init');
[/code]

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

کد بالا رو در فایل توابع قالب یا functions.php بگذارید.

جلوگیری از اجرای کدکوتاه وردپرس

سلام،

می دونید که وردپرس هر جا توی نوشته ها و برگه ها و ویجت ها از کدکوتاه استفاده کنید،و کد مربوطه اون فعال باشه،وردپرس اون رو تحلیل و اجرا می کنه،

مواقعی پیش میاد که نیاز هست عینا خود کد پلاگین توی خروجی قرار بگیره،نه محتوای اجرا شده ی اون،مثال بارزش استفاده کدکوتاه برای آموزش در سایت هست.

اما راه حل جلوگیری از اجرای کد کوتاه در وردپرس بسیار ساده ست:

[code lang="php"] [[[hafez]]] [/code]

برای کدکوتاه های دارای محتوا هم به این صورت:

[code lang="php"]
[[shortcode]محتوا[/shortcode]]
[/code]
.

نمایش پستهای بدون تصویر شاخص

سلام،

تفاوت پستهایی که دارای تصویر شاخص هستند و پستهایی که تصویر شاخص ندارند در متایی با نام _thumbnail_id است،پس کافیه این متا رو فیلتر کنیم:

[code lang="php"]
$args = array();
$args['meta_key'] = '_thumbnail_id';
$args['meta_value'] = '';
$args['meta_compare'] = 'NOT EXISTS';
$posts = new WP_Query($args);
if ($posts->have_posts()) {
while ($posts->have_posts()) {
$posts->the_post();
}
}
[/code]
صفحه 8 از 9« بعدی...56789