شی گرایی در وردپرس – بخش دوم – مقدمه:

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

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

شی گرایی در وردپرس
شی گرایی در PHP

کامل ترین مرجع آموزش یادگیری مفاهیم شی گرایی در PHP

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

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

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

همانگونه که می دانید، اشیا می توانند به عنوان نمایشی از چیزهایی باشند که با آن ها سر و کار داریم که دارای خواص یا همان properties و متدهای یا همان methods مربوط به خود می باشند. به عنوان مثال اگر بخواهیم با مفهوم اشیا در وردپرس آشنا شویم، ساده ترین مثال در وردپرس این می باشد که یک پست مجزا در واقع یک شی می باشد. Property های یک پست شامل عنوان یا title و همین طور محتوای آن پست یا content می باشند. به همین ترتیب اعمالی چون انتشار یا publish، ذخیره کردن یا save، بروزرسانی یا update کردن، همه و همه متدها یا توابع این شی درنظر گرفته می شوند.

به همین ترتیب اگر بخواهیم با مفهوم کلاس در وردپرس که قالب یا ظرفی برای ساخت یک شی بوده (یا همان blueprint) آشنا گردیم، ساده ترین مثال کلاس WP_Query می باشد که در واقع کلاسی می باشد که شما برای ساخت یا نمونه سازی از شی query از آن استفاده می کنید تا بتوانید داده های پست های مختلف خود را در قالب وردپرس به صورت داینامیک به نمایش درآورید.

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

برای اینکه یک شی جدید از این کلاس بسازیم، کافی است از کلمه new در جلوی اسم آن (همانند ساخت کلاس در PHP) استفاده کنیم:

$new_query = new WP_Query();

با این تعریف شی $new_query ساخته شده و شما به کلیه متد ها و property های آن که در وردپرس تعریف شده است، دسترسی دارید. برای دسترسی به متدها و خاصیت ها این شی (همانند دسترسی به آن ها در PHP) کافی است از عملگر ‘ <- ’ بعد از اسم شی به شکل زیر استفاده کنیم:

$new_query->the_post();

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

ساختارهای شرطی در وردپرس و روش های جایگزین برای استفاده از آن ها در وردپرس

ساختارهای کنترلی ، بلاک هایی از کد هستند که بر نحوه روال و اجرای برنامه شما اثر می گذارند و در واقع شما می توانید بخش های مختلف برنامه خود را با آن ها کنترل نمایید. عموما آن ها بصورت شکل هایی از عبارات شرطی (که از if یا switch و مشابه آنها استفاده کرده) و یا به شکل حلقه (که از for و while و foreach و یا مشابه آن ها استفاده می کنند) در برنامه ها ظاهر می شوند و بخش های مختلف برنامه شما و جریان اجرای آن را کنترل می کنند. در PHP شما از دو روش مختلف می توانید برای بیان این ساختارهای کنترلی استفاده نمایید. روش عمومی اول که خیلی ها از آن استفاده می کنند، استفاده از {…} برای کدها مانند زیر می باشد:

if( condition ) {
// do something
}

روش جایگزین این روش که خیلی زیاد در کدهای وردپرس مورد استفاده قرار می گیرد، این می باشد که به جای استفاده از curly brace های باز و بسته، از علامت های ‘ : ‘ به جای ‘ } ‘ در ابتدا استفاده شده و برای انتهای ساختار کنترلی و بسته به کنترلی که مورد استفاده قرار گرفته است، به جای ‘ { ‘ از عبارت های ;endif یا ;endfor یا ;endwhile و یا ;endforeach به مانند زیر استفاده می شود (برای ساختارهای else و همین طور elseif نیز به مانند آن ها و مطابق زیر استفاده خواهد شد):

/***** if structure *****/
if( condition ):
     // do something
endif;

/***** else if structure *****/
if( condition ):
    // do something
elseif( condition ):
    // do something different
else:
    // if all else fails do this
endif;

/***** foreach structure *****/
foreach( loop variable ):
//do loop in this section
endforeach;

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

/***** in twentyfourteen *****
<?php if ( have_posts() ) : ?>
    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <?php get_template_part( 'content', get_post_format() ); ?>
    <?php endwhile; ?>
    <?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>
    <h1 class="entry-title"><?php _e( 'Nothing Found', twentyfourteen); ?></h1>
<?php endif; endwhile; ?>

/***** in twentyseventeen *****/
<?php
if ( have_posts() ) :

   /* Start the Loop */
   while ( have_posts() ) : the_post();
      /*
       * Include the Post-Format-specific template for the content.
       * If you want to override this in a child theme, then include a file
       * called content-___.php (where ___ is the Post Format name) and that will be used instead.
       */
      get_template_part( 'template-parts/post/content', get_post_format() );
   endwhile;

   the_posts_pagination( array(
      'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
      'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
      'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
   ) );

else :
   get_template_part( 'template-parts/post/content', 'none' );

endif;
?>

چندین چیز مهم در استفاده از این روش جایگزین در وردپرس وجود دارد که شما باید حتما آن ها را در نظر بگیرید. اولین مورد این است که، زمانی که شما از ساختارهای کنترلی تو در تو مشابه بالا استفاده می کنید، که در آن ها چندین ساختار کنترلی استفاده شده است، شما باید همان ساختار و syntax را برای سایر ساختارها ادامه و در هر level از این syntax استفاده نمایید.

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

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

راهنما برای مطالعه بیشتر:

شما می توانید از لینک های زیر برای مطالعه بیشتر استفاده نمایید: