سرعت پایین وردپرس به دلیل استفاده مستقیم از WP_Query در قالب است !

یکی از موردی که اغلب سرعت پایین وردپرس را منجر می شود استفاده نادرست از کلاس Wp_Query می باشد.همانطور که می دانید بخش اصلی یک وب سایت وردپرسی محتوای آن هست که در دو جدول Post و PostMeta نگه داری می شوند.
ما بوسیله کلاس Wp Query با ارسال درخواست هایی به بانک اطلاعاتی این محتوا را دریافت و در صفحه وب سایت منتشر می کنیم.

استفاده مستقیم از کلاس WP Query در قالب وردپرس مثل آن می ماند برای یک نفر که با یک پرس غذا سیر می شود هزینه ی زیادی انجام دهیم و 10 پرس سفارش دهیم.آخر چه می شود ؟ خوب مشخص هست پول زیادی را هدر دادیم و خیلی از غذاها را دور ریختیم.

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

اگر میخواهید با این مشکل رو به رو نشوید به این نمونه دقت کنید :
در بخشی از یک وب سایت فروشگاه کتاب ، لیست سه مورد از آخرین کتاب هایی که به سایت اضافه شده توسط کلاس WP Query نمایش داده می شود مانند عکس زیر

برنامه نویسی کوئری در وردپرس

برنامه نویس های وردپرس این کار را به صورت زیر کدنویسی می کنند :

$args = array(
	'orderby' => 'ID',
	'order'   => 'DESC',
	'posts_per_page' => 3,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
	
	while ( $the_query->have_posts() ) : $the_query->the_post();
	
	echo '<div>';
	echo '<img alt="'.get_the_post_thumbnail_caption( get_the_ID() ).'" src="'.get_the_post_thumbnail_url(get_the_ID(),'thumbnail').'">';
	echo '<a href="'.get_the_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a>';
	echo 'نویسنده : '.get_post_meta( get_the_ID(), 'author_book_name', true );
	echo '<br>';
	echo 'موضوع : ';
	
	$post_categories = wp_get_post_categories( get_the_ID() );
	echo implode(" , ", $post_categories);
	
	echo '<div>';
	endwhile;

} else {
	// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();

اگر شما هم مثل کد بالا برنامه نویسی وردپرس را انجام دادید میتوانم بگویم که سرعت پایین وردپرس در قالب شما کاملا عادی است.بیایید یک بار پشت صحنه این کد وردپرس را با هم ببینیم.
من زمانی که کوئری های دیتابیس وردپرس را دیباگ کردم به نتایج زیر رسیدم.اگر شما هم میخواهید دستورات SQL وردپرس را در صفحات سایت خود مشاهده کنید مقاله زیر را مطالعه کنید :

برنامه نویسی افزونه وردپرس حتما بخوانید : اصول اولیه برنامه نویسی افزونه وردپرس برای تولید یک محصول استاندارد
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish')  ORDER BY wp_posts.ID DESC LIMIT 0, 3
SELECT FOUND_ROWS()
SELECT wp_posts.* FROM wp_posts WHERE ID IN (325,318,311)
SELECT  t.*, tt.*, tr.object_id FROM wp_terms AS t  INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format', 'yst_prominent_words') AND tr.object_id IN (311, 318, 325) ORDER BY t.name ASC 
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (311,318,325) ORDER BY meta_id ASC
SELECT * FROM wp_posts WHERE ID = 327 LIMIT 1
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (327) ORDER BY meta_id ASC
SELECT  t.term_id, tt.parent, tt.count, tt.taxonomy FROM wp_terms AS t  INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (325) ORDER BY t.name ASC 
SELECT * FROM wp_posts WHERE ID = 324 LIMIT 1
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (324) ORDER BY meta_id ASC
SELECT  t.term_id, tt.parent, tt.count, tt.taxonomy FROM wp_terms AS t  INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (318) ORDER BY t.name ASC 
SELECT * FROM wp_posts WHERE ID = 313 LIMIT 1
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (313) ORDER BY meta_id ASC
SELECT  t.term_id, tt.parent, tt.count, tt.taxonomy FROM wp_terms AS t  INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (311) ORDER BY t.name ASC

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

بهینه سازی پایگاه داده در برنامه نویسی وردپرس

بیایید این سناریو را تصور کنید تا راه حل برایمان مشخص شود :

ما در اصل به سه مطلب پایانی وردپرس نیاز داریم که هر کدام دارای 5 چیز هست :

  1. لینک محتوا
  2. آدرس عکس تصویر شاخص و Caption آن
  3. عنوان مطلب
  4. نام نویسنده کتاب که یک Post meta در دیتابیس هست
  5. نام دسته بندی این مطلب که مرتبط با جدول Taxonomy در دیتابیس هست.

ما میتوانیم این محتویات را در “نقطه تعییر محتوای وردپرس” وارد پایگاه داده کنیم و سپس تنها با یک کوئری آن را دریافت کنیم.
من ابتدا یک تابع می نویسم و تنها مواردی که نیاز دارم را از آن بدست می آوریم :

function wp_get_the_home_page_content() {
/* Set empty Array For Post*/
$export = array();
	
$args = array(
	'orderby' => 'ID',
	'order'   => 'DESC',
	'posts_per_page' => 3,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
	
	while ( $the_query->have_posts() ) : $the_query->the_post();
	
	$export[] = array(
		'thumbnail_url' => get_the_post_thumbnail_url(get_the_ID(),'thumbnail'),
		'thumbnail_caption' => get_the_post_thumbnail_caption( get_the_ID() ),
		'post_url' => get_the_permalink(),
		'post_title' => get_the_title(),
		'book_author' => get_post_meta( get_the_ID(), 'author_book_name', true ),
		'category' => wp_get_post_categories( get_the_ID() )
	);
	
	endwhile;

} 
/* Restore original Post Data */
wp_reset_postdata();

/* Set Content to Option Table */
update_option( 'my_theme_home_page', $export, 'no' );

}

در این تابع ابتدا کوئری ارسال شد ، سپس مواردی که نیازمند خروجی آن ها در کد Html صفحه بودیم را به آرایه اضافه کردیم.و در آخر در جدول Option با نام my_theme_home_page ذخیره کرده ایم.
اگر میپرسید چرا از Transients API استفاده نکردم کاملا مشخص است چون محتویات ما تاریخ انقضا ندارد.
همانند استاندارد های MVC در برنامه نویسی PHP هیچ گاه سعی نکنید کد Html را نیز به این آرایه اضافه کنید. و بخش View و Model را کاملا جداگانه بررسی و ایجاد کنید.

این تابع برای اینکه با هر بار افزودن مطلب جدید در سایت ما آپدیت شود نیازمند آن هست که در بخشی از وب سایت فراخوانی شود.به نظر شما در چه مرحله ای ما میتوانیم متوجه شویم که اطلاعات وردپرس تغییر کرده است ؟

نقطه تغییر محتوای وردپرس به اکشن و فیلترهایی گفته می شود که در زمان اضافه ، حذف یا ویرایش محتویات پایگاه داده در وردپرس انجام می شود.

در چه زمانی متوجه می شویم یک پست وردپرس اضافه یا ویرایش شده است در وردپرس  :

add_action( 'save_post', 'your_function', 10, 3 );

در چه زمانی متوجه می شویم یک پست حذف شده در وردپرس :

add_action('before_delete_post','your_function');
add_action('after_delete_post', function($postid) { });

در چه زمانی متوجه می شویم یک دسته وردپرس ایجاد یا حذف شده :

add_action( "delete_category", "your_function");
add_action('create_category', 'your_function', 10, 2);
add_action( "edited_category", "your_function" );

در چه زمانی بفهیم روی برچسب های وردپرس عملیات ایجاد حذف یا ویرایش انجام شده :

add_action( "delete_post_tag", "your_function");
add_action('create_post_tag', 'your_function', 10, 2);
add_action( "edited_post_tag", "your_function" );

در چه زمانی متوجه شویم یک رسانه وردپرس ایجاد یا حذف شده است :

add_action( "add_attachment", "your_function");
add_action("delete_attachment", "your_function");

در چه زمانی متوجه شویم یک فهرست وردپرس ایجاد یا حذف شده :

add_action( "wp_create_nav_menu", "your_function");
add_action("wp_update_nav_menu", "your_function");

در چه زمانی یک دیدگاه وردپرس ایجاد یا حذف می شود :

add_action( 'delete_comment', function($comment_id) { } );
add_action('wp_insert_comment','comment_inserted',99,2);

در چه زماتی تنظیمات وردپرس در جدول Option ایجاد یا ویرایش می شوند :

add_action('add_option', function( $option_name, $option_value ) {}, 10, 2);
add_action('update_option', function( $option_name, $old_value, $value ) {}, 10, 3);
add_action('deleted_option', function( $option ) {});

در چه زمانی یک کاربر وردپرس ایجاد یا حذف می شود :

add_action( 'user_register', function($user_id) { }, 10, 1 );
add_action( 'delete_user', function($user_id) { } );

در چه زمانی یک ابزارک وردپرس ایجاد یا حذف می شود :

add_action( 'wp_register_sidebar_widget', function($widget) { } );

و بسیاری از رویداد های دیگر که می توانید در مستندات وردپرس آن ها را براحتی پیدا کنید.این ها همان نقاطی هستند که عملیات تغییر محتوا در بانک اطلاعاتی وردپرس اتفاق می افتد.

اگر به تابع ما دقت کنید متوجه خواهید شد که در چه زمان هایی می بایست تابع فراخوانی شود و عملیات بروز رسانی انجام شود من برای این کار تابع را به رویداد حذف و افزودن مطلب قلاب میکنم به صورت زیر :

add_action( 'save_post', 'wp_get_the_home_page_content', 10, 3 );
add_action('before_delete_post','wp_get_the_home_page_content');

توسط این کار هر بار که عملیات ویرایش ، افزودن یا حذف مطلب در وردپرس رخ داد محتویات کوئری ما نیز برای نمایش در صفحه سایت بروز رسانی می شود حال تنها نیاز هست برای نمایش در وب سایت از نمونه زیر استفاده کنیم :

$post_list = get_option('my_theme_home_page');
foreach($post_list as $e) {
	echo '<div>';
	echo '<img alt="'.$e['thumbnail_caption'].'" src="'.$e['thumbnail_url'].'">';
	echo '<a href="'.$e['post_url'].'" title="'.$e['post_title'].'">'.$e['post_title'].'</a>';
	echo 'نویسنده : '.$e['book_author'];
	echo '<br>';
	echo 'موضوع : ';
	
	echo implode(" , ", $e['category']);
	echo '<div>';
}

این بار دیگر از کوئر های زیاد خبری نیست 🙂 تنها با یک کوئری توانستیم اطلاعات مورد نیاز را دریافت کنیم.
همواره در پروژه های بزرگ مبتنی بر وردپرس  ، راهکار اصلی کاهش سرعت پایین وردپرس در بازدید های زیاد ، بهینه سازی قالب وردپرس توسط تکنیک های متعدد هست.طراحی قالب تنها زیبایی بصری و گرافیک آن و یا حتی سئو آن نیست. بلکه می بایست در هر خط کدی که می نویسد تمامی عوامل تاثیر گزار را مد نظر خود قرار دهید.

مطلب رو به اشتراک بگذارید
۱۹دیدگاه
در بحث‌‌ پیرامون این مقاله شرکت کنید!
ارسال دیدگاه
  • avatar

    رضا

    یکشنبه ۲۶ اسفند ۱۳۹۷ ۱:۰۰ ق٫ظ

    سلام خیلی مفید بود. لطفا در مورد بهینه نوشتن کد ها در وردپرس بیشتر مقاله تولید کنید و یک سوال هم دارم برای ایجاد یک سلسله نوشته به صورت شبکه با اندازه تصاویر متفاوت و از قبل تعیین شده بهترین روش چیست من مثلا از حلقه های وردپرس به صورت تو در تو استفاده کردم و میدونم اصلا بهینه نیست ولی راه حلی رو پیدا نکردم لطفا راهنمایی کنید برای درک بهتر سوالم تصویر زیر رو ببینید:
    http://s9.picofile.com/file/8355251076/02f3bb1e_c81a_4878_8d41_8ae28af6470e.png

    • مهرشاد درزی

      مهرشاد درزی

      چهارشنبه ۲۹ اسفند ۱۳۹۷ ۱:۱۱ ب٫ظ

      شما برای این کار هم میتوانید مثل روش بالا تمامی نیاز هاتون رو در آرایه بزارید و در زمان لود فقط پوش کنید توی html براحتی. ی چیزی یادتون نره وردپرس قبل از اینکه وردپرس باشه با php نوشته شده پس حتما MVC رو داخل وردپرس فراموش نکنید اگر شما برای خودتون view جداگونه داشته باشید روش بالا هر نوع ظاهری قابل پیاده سازی هست. پیشنهاد میکنم timber رو حتما مطالعه کنید برای ایجاد view حرفه ای در وردپرس.

  • avatar

    رضا

    پنجشنبه ۲ خرداد ۱۳۹۸ ۷:۳۱ ب٫ظ

    به نظرم کار خیلی خوبی هستش فقط یه سوال الان مثلا ما از این روش تو قالبمون استفاده کنیم اگه قبل از نصب قالب ما نوشته هایی باشه اونها چطوری ذخیره میشن؟ در موردش لطفا توضیح بدید

    • avatar

      حامد شفیعی

      سه شنبه ۲۲ مرداد ۱۳۹۸ ۱۲:۵۵ ب٫ظ

      شما کافیه یه پست اضافه کنی و یا اکشن رو فراخوانی کنی
      خودکار به روز رسانی میشه

  • رامین نادری

    رامین نادری

    سه شنبه ۱۵ مرداد ۱۳۹۸ ۱۱:۳۳ ب٫ظ

    جالب بود . با تشکر

  • avatar

    امیر

    جمعه ۴ بهمن ۱۳۹۸ ۱:۴۸ ق٫ظ

    سلام
    خیلی مطلب خوبی بود از نظر من که تازه کارم
    من اگر بخواهم آخرین مطلب های یک دسته بندی خاصت رو بگیره باید چی کار کنم
    چون تا جایی که فهمیدم ، این کد آخرین مطالب که منتشر میشه رو میگیره

    • مهرشاد درزی

      مهرشاد درزی

      شنبه ۵ بهمن ۱۳۹۸ ۹:۲۱ ق٫ظ

      امیر جان عزیز شما باید به عنوان یک توسعه دهنده وردپرس با تمامی پارامتر های کلاس WP_Query تسلط 100 درصد داشته باشی. برای افزودن مطالب در یک دسته بندی از پارامتر های Category در WP_Query باید استفاده کنیید.
      لینک مرجع در WordPress Reference:
      https://developer.wordpress.org/reference/classes/wp_query/#category-parameters

  • avatar

    مهدی جباری

    دوشنبه ۱ دی ۱۳۹۹ ۱۰:۰۳ ب٫ظ

    واقعا بی نظیرید اقای درزی
    اولین جایی رو دیدم که واقعا داره وردپرس رو به حرفه ای ترین شکل ممکن تحلیل و بررسی میکنه
    من تو برنامه نویسی خیلی حرفه ای نیسم ولی دلم نیومد برای این محتوای با کیفیت کامنت نزارم
    بی شک تو ایران نظیر ندارید
    بدرخشی استاد

  • avatar

    امیرعلی حبیبی

    سه شنبه ۲۴ فروردین ۱۴۰۰ ۱۰:۱۷ ق٫ظ

    با سلام و تشکر بابت مطلب مفیدتان.

    بنده در حال ایجاد یک تم فوق پیشرفته برای وردپرس هستم؛
    و طبیعتا نیاز به سفارشی کردن برای خریداران وجود دارد(منظور از سفارشی سازی، تغییر در چیدمان، نمایش چه محتوایی چه جایی و...)

    دو نکته پیش می آید:

    1. اگر اطلاعات زیادی به جدول Option اضافه شود مشکلی پیش نمی آید؟

    2. اگر فانکشنی که برای مثال نوشتید، دارای متغیر هایی باشد، باز هم همان عملکرد را خواهد داشت؟(مثلا یک تابع مینویسم و با استفاده از متغیر های آن ، اطلاعات دلخواه کاربر را میگیرم)

    ممنون میشم پاسخ بدهید.

    • مهرشاد درزی

      مهرشاد درزی

      یکشنبه ۲۹ فروردین ۱۴۰۰ ۱:۲۰ ب٫ظ

      فیلد option_value در وردپرس بصورت Longtext هست. و میتواند مقادیر زیادی رو در خود جای دهد و شما نگرانی از این بابت نخواهید داشت. اما ایجاد رکوردهای زیاد و بی معنی بصورت پی در پی دقیقا کاری که Transient انجام میده رو اصلا پیشنهاد نمیکنم چون بسیار صدمه میزنه.
      در مورد سوال دوم نیز پاسخ آری هست و شما میتوانید محاسبات و توابعی که دارید رو انجام بدید و تنها خروجی رو بصورت آرایه ذخیره کنید و در سمت سایت نشون بدین این طوری پروسس های CPU هم بسیار کم تر میشن.

  • avatar

    مصطفی

    چهارشنبه ۱۷ شهریور ۱۴۰۰ ۱۱:۴۱ ق٫ظ

    عالی . تشکر از شما

  • avatar

    mehdi

    سه شنبه ۲۳ آذر ۱۴۰۰ ۷:۲۸ ب٫ظ

    ممنون از سایت خوبتون ولی یک ایراد یا ابهام بزرگی به این تکنیک دارم که ممنون میشم پاسخ بدید
    فرض کنیم ما یک سایت مجله خبری داریم که 10 قسمت کوئری به 10 دسته بندی مختلف داره
    بخش های محبوب ترین مقالات و جدیدترین مقالات و پیشنهاد سردبیر هم داره
    شد 13 تا کوئری ، ما 13 تا فانکشن باید بنویسیم حالا ؟
    اگه این تئوری درست باشه ، یعنی بکند سایتو قربانی فرانت سایت کردیم
    این تکنیک اگر یک خوبی داشته باشه ، 10 تا ایراد داره به نظرم
    از شلوغ شدن دیتابیس تا شلوغ شدن کد تا بسته بودن دست تو کدنویسی و ...

    • مهرشاد درزی

      مهرشاد درزی

      سه شنبه ۲۳ آذر ۱۴۰۰ ۹:۲۷ ب٫ظ

      روشی که در مقاله بیان شد برای کش کردن اطلاعات در درخواست های زیاد وردپرس هست ، همان طور که می دانید وردپرس دو مدل کش داره Object Cache و Database Cache که بصورت پیش فرض ما اون دیتابیس کش رو در Transient قرار میدیم.اگر شما صرفا چند تا بخش محبوب ترین ها و این موارد رو دارین که خوده Object Cache در هسته ی وردپرس این عملیات رو براتون انجام میده و فقط کافیه وردپرس رو با Redis یا Memory cache یا هر ابزار دیگه ای که با Object cache کاملا Compatibility هست کانکت کنید ، مثل افزونه های کش که بخش Object Database دارن و اصلا نیازی به مدل دوم دیتابیس یعنی Transient Cache نیست.

  • avatar

    سینا صفا زاده

    شنبه ۲۷ آذر ۱۴۰۰ ۱۲:۳۴ ب٫ظ

    از wp-json استفاده کنیم برای گرفتن پست ها راحت تر نیست ؟ خود وردپرس گذاشته راهکارشو

    • مهرشاد درزی

      مهرشاد درزی

      شنبه ۲۷ آذر ۱۴۰۰ ۱:۰۱ ب٫ظ

      مبحث wp-json برای استفاده از REST API وردپرس در پلتفرم های دیگه هست. اگر چه داخل هسته ی وردپرس در بخش REST API نیز از کلاس WP_Query استفاده میشه. اگر شما از وب سرویس وردپرس لاگ دیتابیس بگیرید به این موضوع پی خواهید برد.

    • avatar

      سینا صفا زاده

      شنبه ۲۷ آذر ۱۴۰۰ ۷:۵۱ ب٫ظ

      بله کاربرد دیگری داره ولی خب میشه ازش داخل همون سایت هم استفاده کرد ، فقط کافیه json رو بخونیم و نیازی به wp query زدن نیست (با هر بار آپدیت ، خود وردپرس اون فایلو ادیت میکنه) ، درست هست ؟

    • مهرشاد درزی

      مهرشاد درزی

      شنبه ۲۷ آذر ۱۴۰۰ ۹:۱۵ ب٫ظ

      زمانی که شما یک درخواست به API وردپرس می زنید، داخل همون درخواست در هسته ی وردپرس در اصل داره از همون WP Query استفاده میکنه پس در هر حالتی دیتابیس درگیر هست. مگر این که از کش سمت کلاینت استفاه کنید که خودش چالش هایی رو داره.
      البته این ذهنیت شما برای استفاده از REST کاملا قابل تحسین هست.پیشنهاد میکنم مطلب "برنامه نویسی قالب وردپرس بر اساس متد یکسازی سازی REST API" رو در آکادمی مطالعه کنید.

  • avatar

    ایوب زارع

    دوشنبه ۱۴ آذر ۱۴۰۱ ۱۲:۵۴ ب٫ظ

    سلام و درود
    من میخام جدیدترین محصولات سایتم رو نشون بدم :
    اول اومدم از rest api استفاده کرده ،‌ بعد از لود سایت یک درخواست ایجکس از rest api محصولات رو میخوندم و داخل صفحه مورد نظر لود میکردم
    بعد دیدم اگر کویری بزنم به دیتابیس سریع تر میشه ،‌شبیه اون مثال اول کوئری زدم سمت دیتابیس من که نمیتونم از اکشن خاصی استفاده کنم درسته لطفا یه راهنمایی میکنید چظوری بنویسم بهتر هست؟
    برای نمایش محصولات از شورت کد استفاده کردم

    • مهرشاد درزی

      مهرشاد درزی

      سه شنبه ۱۵ آذر ۱۴۰۱ ۱۰:۰۴ ق٫ظ

      در صورتی که می خواهید با PHP اطلاعات محصول را نمایش دهید بهترین گزینه همان اسفاده از WP_Query هست ، همچنین می توانید از بحث کش کردن اطلاعات که در این مقاله بیان شده استفاده کنید تا کوئری کم تری سمت دیتابیس ارسال شود.

آکادمی وردپرس واقعی

دوره جامع مدیریت حرفه ای استارتاپ های وردپرس با خط فرمان و ابزار پکیج منیجر

در دوره جامع WP-CLI یاد خواهید گرفت، به شکل کاملا حرفه ای و با سرعت بیش تر یک یا چند وب سایت وردپرسی خود را مدیریت کنید.عملیات تکراری در مدیریت وردپرس را برای کاهش هدر رفت زمان خود سیستم سازی کنید. وردپرس شما در حین کار با خط فرمان فشار کم تری به سرور ایجاد می کند و این رویکرد می تواند وب سایت شما را بدون نقص و با سرعت عالی ارائه دهد
  • محتوای آموزشی: ۴۶ جلسه آموزشی شامل ۱۶ ساعت ویدیو آموزشی به همراه تمرینات و فایل PDF خلاصه محتوا
  • پروژه عملی دوره: نصب و مدیریت کامل بخش های یک استارتاپ وردپرس در هاست
  • کلاس رفع اشکال: کلاس آنلاین ۳۰ دقیقه ای در پایان دوره به صورت کاملا خصوصی با استاد درزی برای تثبیت محتوا و رفع اشکالات دانشجو
۳,۶۹۷,۰۰۰ تومان
سرویس ها و خدمات وردپرس

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

اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری ابری رادیکال با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۸۰۰,۰۰۰ ۴۹۷,۰۰۰ تومان

اتصال نرم افزار حسابداری ترنج رهیافت به افزونه فروشگاه ساز ووکامرس

اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری ترنج رهیافت با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۸,۰۰۰,۰۰۰ ۴,۵۹۷,۰۰۰ تومان

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

اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری هلو با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۶,۰۰۰,۰۰۰ ۲,۸۴۰,۰۰۰ تومان

اتصال نرم افزار حسابداری سپیدار همکاران سیستم به افزونه ووکامرس به همراه پکیج وب سرویس

اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری سپیدار از شرکت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۱۰,۰۰۰,۰۰۰ ۹,۰۰۰,۰۰۰ تومان

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

اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری دشت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۸,۰۰۰,۰۰۰ ۴,۸۳۰,۰۰۰ تومان

اتصال یک یا چند پنل فروشندگان دیجی کالا به افزونه فروشگاه ساز ووکامرس

اتصال و هماهنگی بخش محصولات ، و سفارشات پنل فروشندگان دیجی کالا با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول و مدیریت لیست سفارشات دیجی کالا در مدیریت وردپرس
۸۰۰,۰۰۰ ۶۹۷,۰۰۰ تومان

اتصال استاندارد رسانه های وردپرس ، فایل های ووکامرس و EDD به هاست دانلود

افزایش هشتاد درصدی سرعت وب سایت های وردپرس با اتصال تصاویر ، ویدیو ، صوت و فایل های فروشگاه ووکامرس و Easy Digital Downloads به هاست دانلود با قابلیت تغییر لینک اتوماتیک رسانه ها در محتوا و محافظ از سرقت فایل فروشی
۱,۲۰۰,۰۰۰ ۸۹۷,۰۰۰ تومان

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

اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری کیان نور رایانه با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۸,۰۰۰,۰۰۰ ۴,۸۹۷,۰۰۰ تومان

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

اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری راهکاران از شرکت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
۱۰,۰۰۰,۰۰۰ ۴,۸۳۰,۰۰۰ تومان