1 پست در این موضوع قرار دارد

php-Introduction-install-xampp.jpg

 

 

مقدمه و معرفی : 

با سلام خدمت شما همراهان گرامی و علاقه مندان به زبان PHP  با قسمت اول آموزش PHP از سری آموزش های برنامه نویسی در خدمت شما هستم. این آموزش به صورت متنی و ویدیویی در اختیار شما قرار خواهد گرفت.

پیش نیاز های این دوره :


قبل از شروع به یادگیری در نظر داشته باشید که شما بایستی یک دانش مقدماتی از طراحی وب HTML,CSS داشته باشید.

مقدمه :


زبان PHP یک زبان اسکریپت نویسی تحت وب می باشد که به سبب سرعت ، قدرت و امنیت بالایی که دارد از محبوبیت زیادی در بین توسعه دهندگان برخوردار می باشد. چنانچه حدود 60 در صد وب سایت های موجود در  سراسر اینترنت توسط PHP ساخته شده اند. PHP آنقدر قدرتمند است که وبسایت های معروفی چون facebook, yahoo, Wikipedia, apple و سیستم های مدیریت محتوای مشهور و قدرتمندی چون joomla, wordpress, drupal یا انجمن هایی مانند vbulletin توسط PHP ساخته و توسعه داده شده اند.


عبارت PHP  مخفف عبارت PHP Hypertext Preprocessor است .PHP یک زبان open source یا متن باز و یک زبان اسکریپت نویسی سمت سرور است. PHP همیشه رایگان می ماند.
ساختار PHP کاملا شبیه به زبان C است و یادگیری آن بسیار راحت است.با PHP شما می توانید صفحات ایستا (استاتیک) را به راحتی پویا (داینامیک) کنید، فایل ها را در سرور باز کنید، بخوانید، تغییر یا حذف نمایید، به انواع پایگاه داده ها وصل شوید و داده ها را ذخیره ، بازیابی و ویرایش کنید، و همچنین می توانید cookie ها را ارسال و دریافت نمایید.

 


یک فایل  PHP با پسوند .php ذخیره و اجرا می شود و می تواند شامل برچسب های HTML ، کدهای جاوااسکریپت و خصوصیت های CSS باشد. نتیجه اجرای کدهای PHP روی server به صورت یک فایل html به سمت کاربر ارسال می شود .
زبان PHP زبان قدرتمندی است که از سرعت پردازش بالایی نیز برخوردار است و همچنین روی اکثر سیستم عامل ها قابل اجرا است و با وب سرویس هایی چون Apache و IIS سازگار می باشد.

 

مراحل نصب:


 برای اجرای فایل های php شما نیاز به یک وب سرویس دارید و اگر می خواهید فایل های PHP را روی کامپیوتر خود اجرا کنید می بایست وب سرویس Apache (آپاچی) ، PHP و پایگاه داده MYSQL را به روی کامپیوتر خود نصب کنید.
شما می توانید هر سه گزینه بالا را به صورت جداگانه نصب کنید. ولی راه حل ساده تر و پرکاربردتر استفاده از نرم افزاهایی ست که به صورت یکجا PHP,Apache , Mysql  را به روی کامپیوتر شما نصب می کند. مشهورترین این نرم افزارها XAMP و WAMP می باشند که در این آموزش ما از XAMP (زمپ) استفاده خواهیم کرد.

 

نصب XAMP :


1-  ابتدا آخرین نسخه XAMP را از وبسایت تولید کننده دریافت می کنیم:  (نسخه سازگار با ویندوز خودتان 64  بیتی یا 32 بیتی )
https://www.apachefriends.org/download.html
2-  سپس فایل نصب را اجرا می کنیم.
3-  در صفحه خوش آمدگویی روی گزینه Next کلیک کنید

آموزش نصب xampp

4-در این صفحه تیک تمامی موارد را بزنید و روی Next کلیک کنید.

آموزش نصب زمپ

5-  مسیر نصب را تعیین کنید (معمولا مسیر پیش فرض انتخاب می شود) . بعد از آن رو گزینه Next کلیک کنید.

آموزش نصب xampp

6-  این صفحه معرفی Bitnami برای Xampp است. با زدن تیک گزینه Learn more about Bitnami for Xampp می توانید اطلاعات بیشتری را مشاهده فرمایید.
در این صفحه روی گزینه Next کلیک کنید.

آموزش نصب زمپ

7-  در این مرحله با انتخاب گزینه Next  فرایند نصب آغاز می گردد.

آموزش نصب XAmpp

 

نکته بسیار مهم:


پورت آپاچی Xampp در ویندوز پورت 80 را اشغال می کند. اگر نرم افزاری یا سرویسی (مانند IIS یا SQL Server) از قبل این پورت را اشغال کرده باشد شما نمی توانید Xampp را اجرا کنید.
برای رفع این مشکل می توانید یا سرویس ها یا نرم افزارهایی که پورت 80 را اشغال کرده اند غیرفعال کنید و یا پورت Xampp را به 8080  تغییر دهید.
بعد از نصب برنامه Xampp را اجرا کنید. هنگامی که برنامه را اجرا کردید صفحه ای به عنوان کنترل پنل Xampp مانند شکل زیر برای شما نمایش داده می شود. شما می توانید برای شروع Apache و Mysql را start کنید.

آیکن Mysql و Apache بعد از start شدن باید به رنگ سبز تغییر کند. اگر رنگ این دو زرد یا قرمز بود حتما مشکلی در هنگام نصب پیش آمده که مانع اجرای این  موارد شده است .

آموزش نصب زمپ

آموزش کنترل پنل زمپ

 

 

 

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

 


بسیار خب تا به اینجای کار خوب پیش رفتیم. برای نوشتن و اجرای کدهای PHP به دو ابزار دیگر هم نیاز داریم.
1-  محیطی برای برنامه نویسی
2-  نرم افزاری برای اجرا
در این دوره از آموزش مقدماتی PHP از محیط Notepad ویندوز جهت نوشتن کدهای PHP استفاده می کنیم. محیط های حرفه ای تر با نمای کاربری زیباتری هم وجود دارد. ولی این محیط های حرفه ای را برای شروع به هیچ عنوان پیشنهاد نمی کنم. چون با امکاناتی که این نرم افزارها در اختیار شما قرار می دهند عملا قدرت کدنویسی را از شما می گیرند و شما به اصطلاح در کدنویسی تنبل بار می آیید و در آینده برای خطایابی یا توسعه به مشکل بر خواهید خورد. البته در آموزش های سطح حرفه ای حتما از محیط های پیشرفته تری جهت کدنویسی استفاده خواهیم کرد.


برای اجرای کدی که نوشتیم از مرورگرهای وب استفاده می کنیم که در حال حاضر 2 مرورگر خوب و قدرتمند FireFox و Chrome را پیشنهاد می دهم که هر دوی این مرورگرها رایگان و قدرتمند می باشند.
خب حالا به محل نصب  Xampp (پیش فرض آدرس C:/Xampp) رفته و پوشه htdocs را بیابید و باز کنید. مشاهده می کنید که تعدادی فایل و پوشه داخل htdocs از قبل وجود دارد.
پوشه htdocs پوشه ریشه Apache است و تمام فایل های وب را از این پس در این پوشه ذخیره می کنیم.اگر مرورگر خود را باز کنید و عبارت localhost ویا 127.0.0.1 را در نوار آدرس بنویسید و Enter را بزنید صفحه ای مانند زیر برای شما باز خواهد شد. این دقیقا فایل index.php می باشد که داخل پوشه htdocs وجود دارد.
وقتی localhost را در مرورگر اجرا می کنید در واقع مرورگر به پوشه htdocs رفته و بعد از آن فایل مورد نظر شما را اجرا می کند. مثلا اگر در پوشه htdocs پوشه ای به نام files ایجاد کنید و در رون این پوشه فایلی با نام hello.php را ذخیره کنید، برای اجرای این فایل باید آدرس localhost/files/hello.php را وارد کنید.

 

divider.jpg


نکته: اگر در ادامه localhost و یا در ادامه آدرس پوشه ها چیزی وارد نکنید، به صورت پیشفرض فایل index.php اجرا خواهد شد.
بسیار خب حالا کلیه محتویات پوشه htdocs را cut کرده و داخل یک فولدری خارج از htdocs منتقل کنید تا بتوانیم خود به کدنویسی بپردازیم.
در این قسمت نرم افزار notepad را از منوی استارت ویندوز پیدا و اجرا کنید. درون notepad کدهای زیر را با دقت وارد.

<?php
echo  "Hello world";
?>

حالا فایل مورد نظر را در مسیر c:/htdocs با نام hellop.php ذخیره کنید.
نکته: در هنگام ذخیره از لیست save as type  گزینه all files  و از لیست encoding گزینه utf-8 را انتخاب کنید.
بسیار عالی . حالا مرورگر را باز کرده و آدرس localhost/hello.php را وارد کنید تا فایل مورد نظر اجرا شود.
اگر تمام مراحل را با دقت انجام داده باشید باید نتیجه مانند شکل زیر باشد.

آموزش نصب زمپ

بسیار خب ! تا به اینجای کار تمامی نرم افزارها و مقدمات لازم برای شروع کدنویسی به زبان PHP را نصب کردیم.
در جلسه بعدی رسما کدنویسی را آغاز می کنیم.
برای این جلسه یک فیلم ویدیویی آماده شده که می توانید از لینک زیر مشاهده کنید.
ممنون که همراه ما بودید.

منبع: آموزش PHP - پی سی وی مگ

0

به اشتراک گذاری این پست


لینک به پست

  • مطالب مشابه

    • توسط Hamid_92
      با سلام خسته نباشید من قبلا به یک برنامه نویس طراحی وبسایت رو سپردم و ایشونم من رو راهنمایی کرد که پوسه و هاست و دامنه رو خودم بخرم بهش بدم نصب کنه حالا مشکلی پیش اومده در پوسته فارسی دیجی رادو من و نتونستم حلش کنم میخواستم ببینم چرا سورس کد رو روی سایت در قسمت مقالات سایتم نشون داده میشه!!!
       
      تصویر پوسته ی دارای خطا
      هر دو لینک یکی است!
      qqqqq_Copy.bmp
    • توسط jistili1
      سلام دوستان.
      ببینید من یک فرم دارم که فقط دو input داره.یک اینپوت متن و یک اینپوت سابمیت.توی اینپوت متن ، کاربر کد imdb یک فیلم رو میده.بعد فرم من با ajax ارسال میشه.فرض بگیریم مقادیر برای صفحه check.php ارسال بشه.حالا من توی صفحه check.php همچین کدی رو دارم:
      <?php if(isset($_POST["btn"])) { echo file_get_contents("http://mydiba.club/".$_POST["link"]."/"); ?> <script src="jquery-3.4.1.js"></script> <script> $(document).ready(function(){ $(".-dl .Block_dl").each(function(){ var href=$(this).find(".dublboxa:first-of-type").attr("href"); $.ajax({ url:"check2.php", method:"POST", data:"link="+href }); }); }); </script> <?php } ?> اگه به کد دقت کنید ، وقتی کاربر کد imdb یک فیلم رو وارد کرد ، در صفحه check کل محتویات اون فیلم که در یکی از سایت های دانلود فیلم هست echo میشه.بعد در این قسمت یک ajax دیگه هم داریم که خودش توی یک صفحه check هست.کار این قطعه کد ajax که در جی کوئری نوشته شده اینه که تمامی لینک های دانلود اون فیلم رو از سایت دانلود فیلم بگیره و ببره به یک صفحه check دیگر که در اینجا اسمش check2.php هست.خودتون میتونید کد رو ببینید.حالا اینکه توی صفحه check2.php چی هست دیگه مهم نیست.خلاصشو بگم : من اینکارو کردم ولی همونطور که فکرشو میکردم انجام نشد.شما چه راه حلی برای این کار دارید؟در واقع الان با دو تا ajax تو در تو روبرو هستیم.
      یک قسمت از کد من اشکال داره یا در کل غیر استاندارد نوشتم؟اگه میشه یه راه حل بگید که اینکار رو بتونم انجام بدم.دقت کنید که اون قسمت از کد جی کوئری که از متد each استفاده کردم ، برای اینه که به ازای هر لینکی که در صفحه اون فیلم در سایت دانلود وجود دارد ، یک بار این ajax که خودش توی صفحه check یک ajax دیگست رو انجام بده.
      خیلییی خیلییی ممنون میشم اگه کمکم کنید.
      ضمنا از curl هم نمیخوام استفاده کنم
    • توسط mortaza
      لازم دارم کل کلمات به متن رو استخراج کنم و بعد بررسی کنم که ایا این کلمات توی دیتابیس من موجود هستن یا ن و الی آخر
      اما توی مرحله استخراج لغات گیر کردم (لغات انگلیسی هستن) خب من اول اومدم کد زیر رو امتحان کردم
      preg_match_all("~([\w]+)~", $text,$words); خیلی خوب کار کرد تا مشکلی که داشت این بود که لغاتی مثل can’t را دو لغت حساب میکرد (به این صورت: لغت اول: can لغت دوم: t) 
      من اومدم کد رو شکل زیر تغییر دادم:
      preg_match_all("~([\w\’]+)~", $text,$words); اما مشکلی که داشت بعضی کلمات که بلافاصله بعدشون نقطه یا کاما بود رو اشتباه نشون میداد مثلا به جای minds یکی از عضو های array 
      minds� هست چندین تا لغت دیگه هم به همین شکل یه کاراکتر � اضافی به تهشون اضافه شده
      چه کار کنیم که این مشکل پیش نیاد؟ اصلا دلیل اتفاق افتادن این پدیده چیه؟
       
      نمونه ای از متن مد نظرم:
      Procrastination comes in many disguises. We might resolve to tackle a task, but find endless reasons to defer it. We might prioritize things we can readily tick off our to-do list—answering emails, say—while leaving the big, complex stuff untouched for another day. We can look and feel busy, while artfully avoiding the tasks that really matter. And when we look at those rolling, long-untouched items at the bottom of our to-do list, we can’t help but feel a little disappointed in ourselves.
      The problem is our brains are programmed to procrastinate. In general, we all tend to struggle with tasks that promise future upside in return for efforts we take now. That’s because it’s easier for our brains to process concrete rather than abstract things, and the immediate hassle is very tangible compared with those unknowable, uncertain future benefits. So the short-term effort easily dominates the long-term upside in our minds—an example of something that behavioral scientists call present bias.
      How can you become less myopic about your elusive tasks? It’s all about rebalancing the cost-benefit analysis: make the benefits of action feel bigger, and the costs of action feel smaller. The reward for doing a pestering task needs to feel larger than the immediate pain of tackling it.
      To make the benefits of action feel bigger and more real:
      Visualize how great it will be to get it done. Researchers have discovered that people are more likely to save for their future retirement if they’re shown digitally aged photographs of themselves. Why? Because it makes their future self feel more real—making the future benefits of saving also feel more weighty. When we apply a lo-fi version of this technique to any task we’ve been avoiding, by taking a moment to paint ourselves a vivid mental picture of the benefits of getting it done, it can sometimes be just enough to get us unstuck. So if there’s a call you’re avoiding or an email you’re putting off, give your brain a helping hand by imagining the virtuous sense of satisfaction you’ll have once it’s done—and perhaps also the look of relief on someone’s face as they get from you what they needed.
      Pre-commit, publicly. Telling people that we’re going to get something done can powerfully amplify the appeal of actually taking action, because our brain’s reward system is so highly responsive to our social standing. Research has found that it matters greatly to us whether we’re respected by others—even by strangers. Most of us don’t want to look foolish or lazy to other people. So by daring to say “I’ll send you the report by the end of the day” we add social benefits to following through on our promise—which can be just enough to nudge us to bite the bullet.
       
       
    • توسط estedadrap
      سلام
      من میخوام از زمینه دلخواه استفاده کنم تو یه قسمت از کد php اما هرکاری میکنم اررور ; یا , میده
       
      echo do_shortcode(' <div class="buttondl"> <a href="#buy_album" class="popup_link button medium buy_album">Download</a> <div id="buy_album" class="popup"><div class="def-block widget"> اینجا زمینه دلخواه نمایش داده بشه بصورت لینک </div></div></div> '); <a href="<?php $dl = get_post_meta($post->ID, 'dl', true); ?>"></a> میخوام زمینه دلخواه بالا رو داخل کد php قرار بدم
    • توسط estedadrap
      سلام
      خسته نباشید 
      من جهت تکمیل کرد بخش آرتیست یک سایت موزیک میخوام در قسمت ارتیست تعداد کل اهنگ های مرتبط با هر ارتیست رو نشون بدم
      قالبی که استفاده میکنم این قابلیت رو داره که با ایجاد بخش ارتیست برای هر شخض این کار رو انجام بده اما این قابلیت داخل پست تیپ داخل داشبورد گذاشته شده 
      تو عکسی که لینکشو زیر میزارم بهتر متوجه خواهید شد..
      AXE
      و اما... پیگیر شدم و کدش رو با هزار مکافات که داخل یه فایل فانشن تو یه افزونه اختصاصی قالب جا خوش کرده بود رو پیدا کردم
      اما از اونجایی که کدنویسی خیلی پیچیده ای داشت نتونستم به هدفم برسم
      کد رو براتون میزارم ..
      <?php /** * Post Types * * @author Codevz * @link http://codevz.com */ if ( ! defined( 'ABSPATH' ) ) { die( '-1' ); } class Codevz_CPT { public function __construct() { add_action( 'admin_head', array( $this, 'admin_head' ) ); $this->types = array( 'artists' => 'dashicons-admin-users', 'songs' => 'dashicons-format-audio', 'news' => 'dashicons-format-audio', 'playlists' => 'dashicons-playlist-audio', 'podcasts' => 'dashicons-microphone', 'lyrics' => 'dashicons-welcome-write-blog', 'videos' => 'dashicons-video-alt3', 'events' => 'dashicons-calendar', 'gallery' => 'dashicons-format-gallery' ); /* Register post types */ add_action( 'init', array( $this, 'register' ), 0 ); /* Manage CPT columns action */ add_action( 'manage_posts_custom_column', array( $this, 'manage_columns' ), 10, 2 ); /* Manage CPT columns filter */ foreach ( $this->types as $name => $i ) { $columns = array(); add_filter( "manage_edit-".$name."_columns", function () use ( $columns ) { global $typenow; $i = array(); $i['cb'] = 'cb-select-all-1'; $i['cover'] = __( 'Cover', 'cd' ); $i['title'] = __( 'Title', 'cd' ); if ( $typenow !== 'artists' ) { $i['cd_artist'] = __( 'Artist', 'cd' ); } if ( $typenow === 'artists' ) { $i['cd_items'] = __( 'Items', 'cd' ); $i['taxonomy-artist'] = __( 'Under', 'cd' ); } if ( $typenow === 'events' ) { $i['cd_event_date'] = __( 'Start', 'cd' ); $i['cd_end_event_date'] = __( 'End', 'cd' ); $i['cd_venue'] = __( 'Venue', 'cd' ); } if ( $typenow === 'songs' ) { $i['cd_plays'] = __( 'Plays', 'cd' ); $i['cd_downloads'] = __( 'Downloads', 'cd' ); } if ( $typenow === 'songs' ) { $i['cd_plays'] = __( 'Plays', 'cd' ); $i['cd_downloads'] = __( 'Downloads', 'cd' ); } if ( $typenow === 'videos' ) { $i['cd_views'] = __( 'Views', 'cd' ); } $i['cd_likes'] = __( 'Likes', 'cd' ); $i['cd_dislikes'] = __( 'Dislikes', 'cd' ); $i['comments'] = __( 'CM', 'cd' ); $i['author'] = __( 'By', 'cd' ); if ( $typenow === 'post' ) { $i['categories'] = __( 'Categories', 'cd' ); } $i['date'] = __( 'Date', 'cd' ); $columns = $i; return $columns; }); } /* Sortable cols */ $this->sortable = array( 'cd_event_date', 'cd_end_event_date', 'cd_plays', 'cd_likes', 'cd_dislikes', 'cd_downloads', 'cd_views' ); foreach ( $this->types as $name => $i ) { $columns = array(); add_filter( "manage_edit-".$name."_sortable_columns", function () use ( $columns ) { foreach ( $this->sortable as $i ) { $columns[$i] = $i; } return $columns; }); } add_action( 'load-edit.php', array( $this, 'sorting_request' ) ); } public function admin_head() { echo '<style> .vc_license-activation-notice, .eg-update-notice-wrap, .rs-update-notice-wrap { position: absolute; height: 1px !important; left: -10000px !important } .dashicons-format-audio:before, .dashicons-playlist-audio:before, .dashicons-microphone:before, .dashicons-welcome-write-blog:before, .menu-icon-artists .dashicons-admin-users:before, .dashicons-video-alt3:before, .dashicons-format-gallery:before, .dashicons-calendar:before { color: #2ea2cc !important } .wp-has-current-submenu .dashicons-format-audio:before, .wp-has-current-submenu .dashicons-playlist-audio:before, .wp-has-current-submenu .dashicons-microphone:before, .wp-has-current-submenu .dashicons-welcome-write-blog:before, .wp-has-current-submenu .dashicons-admin-users:before, .wp-has-current-submenu .dashicons-video-alt3:before, .wp-has-current-submenu .dashicons-format-gallery:before, .wp-has-current-submenu .dashicons-calendar:before { color: #fff !important } th#artist, th#cd_plays, th#cd_likes, th#cd_dislikes, th#alphabet, th#cd_downloads, th#cd_views, th#items, th#taxonomy-artist, th#categories, th#venue, th#status { width: 8% } th#cd_event_start, th#cd_event_end { width: 10% } th#cover { width: 42px } .cover img, .riv_post_thumbs img { border-radius: 4px; width: 40px; height: 40px } .cd_ico { background-image: none !important; background-color: #2A81CC; text-align: center; border-radius: 2px; padding: 5px; width: inherit !important; height: inherit !important; } .cd_ico:before { color: #fff !important } .wpb_element_title .cdz_ico { width: 22px !important; height: 20px !important } [data-param_type|=posttypes] .edit_form_line, [data-param_type|=checkbox] .edit_form_line { height: 126px; overflow: auto; border: 1px solid #F3F3F3; padding: 2px 0 0 10px } [data-param_type|=posttypes] .vc_checkbox-label, [data-param_type|=checkbox] .vc_checkbox-label { display: block; margin: 6px 0 } </style>'; } public function register() { $this->menu_separator( 26 ); $options = get_option( '_cs_options' ); foreach ( $this->types as $slug => $icon ) { $opt = isset( $options[ $slug . '_settings' ] ) ? $options[ $slug . '_settings' ] : array(); $opt = array( 'slug' => !empty( $opt['slug'] ) ? $opt['slug'] : $slug, 'title' => !empty( $opt['title'] ) ? $opt['title'] : ucfirst( $slug ), 'alphabet_slug' => !empty( $opt['alphabet_slug'] ) ? $opt['alphabet_slug'] : $slug.'/browse', 'alphabet_title'=> !empty( $opt['alphabet_title'] ) ? $opt['alphabet_title'] : 'Alphabet', 'cat_slug' => !empty( $opt['cat_slug'] ) ? $opt['cat_slug'] : $slug.'/cat', 'cat_title' => !empty( $opt['cat_title'] ) ? $opt['cat_title'] : 'Categories' ); register_taxonomy( $slug.'_cat', $slug, array( 'hierarchical' => true, 'labels' => array( 'name' => $opt['cat_title'], 'menu_name' => $opt['cat_title'] ), 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => true, 'rewrite' => array( 'slug' => $opt['cat_slug'], 'with_front' => false ), ) ); if ( $slug === 'artists' ) { register_taxonomy( 'artist', 'artists', array( 'hierarchical' => true, 'labels' => array( 'name' => $opt['alphabet_title'], 'menu_name' => $opt['alphabet_title'] ), 'show_ui' => true, 'show_admin_column' => true, 'show_in_rest' => true, 'query_var' => true, 'rewrite' => array( 'slug' => $opt['alphabet_slug'], 'with_front' => false ), ) ); } register_post_type( $slug, array( 'labels' => array( 'name' => $opt['title'], 'menu_name' => $opt['title'] ), 'public' => true, 'menu_icon' => $icon, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'comments', 'author' ), 'has_archive' => true, 'show_in_rest' => true, 'rewrite' => array( 'slug' => $opt['slug'], 'with_front' => false ) ) ); register_taxonomy_for_object_type( 'post_tag', $slug ); } $this->menu_separator( 36 ); } public function sorting_request() { add_filter( 'request', array( $this, 'sorting' ) ); } public function sorting( $vars ) { foreach ( $this->sortable as $i ) { if ( isset( $vars['orderby'] ) && $i === $vars['orderby'] ) { if ( $i == 'cd_event_date' || $i === 'cd_end_event_date' ) { $vars = array_merge( $vars, array( 'meta_query' => array( array( 'key' => $i, 'value' => date('2030/12/28 10:30'), 'compare' => '<' ) ) ) ); } else { $vars = array_merge( $vars, array( 'meta_key' => $i, 'orderby' => 'meta_value_num' ) ); } } } return $vars; } public function manage_columns( $column, $post_id ) { $meta = get_post_meta( $post_id, 'cd_meta', true ); $meta = isset( $meta ) ? $meta : array(); $out = ''; switch( $column ) { case 'cover' : ob_start(); the_post_thumbnail( 'thumbnail' ); $out = ob_get_clean(); break; case 'cd_items' : $out .= $this->get_artist_items( 'post', $post_id ); $out .= $this->get_artist_items( 'songs', $post_id ); $out .= $this->get_artist_items( 'news', $post_id ); $out .= $this->get_artist_items( 'posts', $post_id ); $out .= $this->get_artist_items( 'videos', $post_id ); $out .= $this->get_artist_items( 'podcasts', $post_id ); $out .= $this->get_artist_items( 'playlists', $post_id ); $out .= $this->get_artist_items( 'events', $post_id ); $out .= $this->get_artist_items( 'gallery', $post_id ); $out .= $this->get_artist_items( 'lyrics', $post_id ); $out .= $this->get_artist_items( 'posts', $post_id ); $out .= $this->get_artist_items( 'product', $post_id ); break; case 'cd_event_date' : $out .= date_i18n( "j F, Y", strtotime( isset( $meta['event_date'] ) ? $meta['event_date'] : '' ) ) . '<br />'; $out .= date_i18n( "H:i", strtotime( isset( $meta['event_date'] ) ? $meta['event_date'] : '' ) ); break; case 'cd_end_event_date' : $out .= date_i18n( "j F, Y", strtotime( $meta['end_event_date'] ) ) . '<br />'; $out .= date_i18n( "H:i", strtotime( $meta['end_event_date'] ) ); break; case 'cd_venue' : $out = isset( $meta['venue'] ) ? $meta['venue'] : ''; break; case 'cd_artist' : $out = $this->get_artists( $post_id ); break; case 'cd_plays' : $out = get_post_meta( $post_id, 'cd_plays', true ); $out = !is_array( $out ) ? $out : ''; break; case 'cd_likes' : $out = get_post_meta( $post_id, 'cd_likes', true ); break; case 'cd_dislikes' : $out = get_post_meta( $post_id, 'cd_dislikes', true ); break; case 'cd_downloads' : $out = get_post_meta( $post_id, 'cd_downloads', true ); break; case 'cd_views' : $out = get_post_meta( $post_id, 'cd_views', true ); break; } echo $out ? $out : '_'; } public function menu_separator( $p ) { global $menu; static $id = 0; if ( !is_int( $p ) ) { $mp = 0; foreach( $menu as $mp => $i ) { if ( $i[2] === $p ) { break; } } $p = $mp + 1; } $menuFile = 'separator-custom-' . $id++; $menu[$p] = array( '', 'read', $menuFile, '', 'wp-menu-separator cd_separator' ); ksort( $menu ); } public function get_artist_items( $cpt, $id ) { $query = new WP_Query( array( 'post_type' => $cpt, 'meta_query' => array( array( 'relation' => 'OR' ), array( 'key' => 'cd_meta', 'value' => '"' . $id . '"', 'compare' => 'LIKE' ) ), 'posts_per_page' => -1 ) ); return $query->post_count ? '[' . $query->post_count . '] ' . ucwords( $cpt ) . '<br />' : ''; wp_reset_postdata(); } public function get_artists( $id, $out = '' ) { $meta = get_post_meta( $id, 'cd_meta', true ); $meta = isset( $meta['artist'] ) ? $meta['artist'] : array(); $artists = array(); if ( $meta ) { foreach( $meta as $i ) { if ( get_the_title( $id ) !== get_the_title( $i ) ) { $artists[] = '<a href="' . get_post_permalink( $i ) . '">' . get_the_title( $i ) . '</a>'; } } $out .= implode( '<br />', $artists ); } return $out; } } new Codevz_CPT(); و اما میخوام کد رو داخل این حلقه استفاده کنم .. میدونم که برای خیلی از اساتید این یه مسئله خیلی پیش پا افتاده هست 
      لطفا بررسی کنید
      /* Artists */ if ( $cpt === 'artists' ) { if ( ! empty( $meta['fb'] ) ) { echo '<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5&appId=376512092550885"; fjs.parentNode.insertBefore(js, fjs); }(document, \'script\', \'facebook-jssdk\'));</script>'; echo '<div class="mbt fb-page" data-href="' . $meta['fb'] . '" data-tabs="timeline" data-width="500" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"></div>'; } if ( isset( $meta['social'] ) ) { echo '<div class="clr mb">'; $codevz->social( $meta['social'] ); echo '</div>'; } echo '<img class="cd_instagramimge" src="' . esc_url( get_post_meta( get_the_ID(), 'vphoto', true ) ) . '" />'; ?> <?php echo '<br>'; }