<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدجعفر خواجه</title>
        <link>https://virgool.io/feed/@mjkhajeh</link>
        <description>برنامه نویس وردپرس که دوست داره بعضی از اطلاعاتش رو با بقیه به اشتراک بزاره! د:</description>
        <language>fa</language>
        <pubDate>2026-04-14 17:55:44</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/88442/avatar/SsYa19.jpg?height=120&amp;width=120</url>
            <title>محمدجعفر خواجه</title>
            <link>https://virgool.io/@mjkhajeh</link>
        </image>

                    <item>
                <title>ساخت جدول جدید در دیتابیس وردپرس یا استفاده از جدول وردپرس؟</title>
                <link>https://virgool.io/wptips/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AC%D8%AF%D9%88%D9%84-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-%DB%8C%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AC%D8%AF%D9%88%D9%84-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-khfvopjvpd9f</link>
                <description>چند وقت قبل یه پروژه داشتم که کارفرما میخواست پلاگینی براش بنویسم. خب طبق معمول پلاگین نیازمند ذخیره اطلاعات بود. طبق درخواست کارفرما جدول جدیدی توی دیتابیس وردپرس ساخته شد و اطلاعات وارد این جدول شد. در حالی که تقریبا همیشه از options و متا ها استفاده میکردم. برام این سوال پیش اومد که چرا کارفرما بخواد جدول جدید توی دیتابیسش ساخته بشه؟ چه تاثیری داره؟ امنیتش چطور میشه؟ اختلالی پیش نمیاد؟ و کلی سوال دیگه…چرا باید جدول جدید ساخته بشه؟نتیجه تست‌هایی که انجام دادم اینجور شد که سرعت دریافت اطلاعات از جدولی که ساختیم بالاتر بود. البته انتظار اینو هم داشتم. چون جدول‌های wp_options و متاها به اندازه کافی شلوغ هست. البته سرعت به قدری نبود که حتی به چشم بیاد و با اختلاف خیلی خیلی اندک بود.کدنویسیش چطور هست؟وردپرس برای کار با دیتابیس از یه کلاس استفاده میکنه به نام wpdb این کلاس کلی متد و تابع داره که نوشتن دستورات SQL رو خیلی راحت میکنه. حالا چه برای گرفتن اطلاعات چه برای ثبت و آپدیت اطلاعات.هر جدول وردپرس یه پیشوند(prefix) داره. همونطور که احتمالا میدونید این پیشوند رو موقع نصب وردپرس مشخص میکنیم.ثابت prefix ثابتی هست که این پیشوند توش ذخیره میشه و هر جا لازم بود میتونید ازش استفاده کنید.&lt;?php
global $wpdb;
$wpdb-&gt;prefix;برای آشنایی کامل با کلاس wpdb بهتره که مقالاتی که دربارش هست و داکیومنت خودش رو بخونید. داکیومنت wpdbساخت یک مجموعه کد که حالت CRUD(Create, Read, Update, Delete) رو ایجاد کنه کمی زمانبر هست. حتی شاید لازم داشته باشید که بر اساس شرایطی که اونموقع توش هستید یکی از این حالت‌ها رو دستکاری کنید. یعنی هربار باید متغییری، شرایط ویژه‌ای یا هر چیز دیگه ای به این سیستمتون اضافه کنید. اینکار هم باعث میشه کد پیچیده بشه، هم حوصله سر بره هم ممکنه باعث ایجاد باگ بشه.چون نمیخوام گوگل مطلب سایتم یا این مطلب رو به عنوان کپی در نظر بگیره و تاثیر منفی داشته باشه لطفا ادامش رو از سایتم بخونید....ممنون که درک میکنید... :)</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Mon, 06 Dec 2021 02:02:33 +0330</pubDate>
            </item>
                    <item>
                <title>چرا تابع $ در وردپرس نیست؟</title>
                <link>https://virgool.io/@mjkhajeh/%DA%86%D8%B1%D8%A7-%D8%AA%D8%A7%D8%A8%D8%B9-%D8%AF%D8%B1-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-%D9%86%DB%8C%D8%B3%D8%AA-ex1xrntzzvf1</link>
                <description>منبع: چرا تابع $ در وردپرس نیست؟سلاماگه برنامه نویس وردپرس باشید احتمالا نیاز بوده که کد jQuery بنویسید. معمولا اونایی که دفعه اولشون هست که توی وردپرس کد jQuery مینویسن از تابع $ استفاده میکنن با ارور روبرو میشن. خب راه حل این مشکل توی اینترنت هست و راه های مختلفی هم داره. آخر پست چنتا از راه حل هایی که هست رو معرفی میکنم. ولی بحث اصلی این پست درباره اینه که چرا تابع $ رو نداریم…چرا این تابع $ نیست؟این تابع در حقیقت توی وردپرس هست. اما خود jQuery یه تابع داره به نام jQuery.noConflict() که باعث میشه $ از بین بره. اگه آخر فایل جاوااسکریپت کتابخونه jQuery وردپرس رو نگاه کنید متوجه میشید که این تابع اضافه شده. فایل jQuery وردپرس مناصلی ترین دلیل اینکه این تابع رو نداریم بخاطر عدم تداخل $ کتابخونه jQuery با بقیه کتابخونه هاست. مثلا کتابخونه MooTools هم از این تابع استفاده میکنه. با اینکه این کتابخونه توی وردپرس نیست اما خب اضافه کردنش که کاری نداره و شاید یه پلاگین، قالب، کد یا هر چی دیگه باشه که از این کتابخونه استفاده کنه. اما مطمئنا هیچ کتابخونه ای به جز jQuery از تابع jQuery استفاده نمیکنه. پس اگه برنامه نویسی خواست تابع $ داشته باشه میتونه خودش از روی تابع jQuery این رو ایجاد کنه.راه های حل این مشکلچون نمیخوام گوگل مطلب سایتم یا این مطلب رو به عنوان کپی در نظر بگیره و تاثیر منفی داشته باشه لطفا ادامش رو از سایتم بخونید....ممنون که درک میکنید... :)</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Fri, 12 Nov 2021 19:16:16 +0330</pubDate>
            </item>
                    <item>
                <title>حذف تگ های HTML با Regex در JavaScript</title>
                <link>https://virgool.io/@mjkhajeh/%D8%AD%D8%B0%D9%81-%D8%AA%DA%AF-%D9%87%D8%A7%DB%8C-html-%D8%A8%D8%A7-regex-%D8%AF%D8%B1-javascript-vwujomgoxanq</link>
                <description>این کد تمام تگ های HTML یا به صورت کلی XML رو حذف میکنهبرای حذف کردن تگ‌ها از Regex استفاده شدهconst stripHTMLTags = str =&gt; str.replace(/&lt;[^&gt;]*&gt;/g, &#039;&#039;);نحوه استفاده:stripHTMLTags(&#039;&lt;p&gt;&lt;em&gt;lorem&lt;/em&gt; &lt;strong&gt;ipsum&lt;/strong&gt;&lt;/p&gt;&#039;);مقدار بازگشتی lorem ipsum خواهد بود</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sat, 01 May 2021 14:20:22 +0430</pubDate>
            </item>
                    <item>
                <title>نصب وردپرس در اوبونتو</title>
                <link>https://virgool.io/web-design/%D9%86%D8%B5%D8%A8-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-%D8%AF%D8%B1-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-e59ksyqd9erm</link>
                <description>سلاممن چند وقت هست که دیگه برای کدنویسی از ویندوز استفاده نمیکنم و اومدم سراغ لینوکس. اوایل چندان باهاش راحت نبودم اما کم کم بهش عادت کردم. الان دیگه جوری شده که نمیتونم از ویندوز برای کد نویسیم استفاده کنم.برای استفاده از لینوکس دلایل زیادی داشتم که حتی چنتاش شخصی هم بود. اما یکی از این دلایل این بود که میخواستم ببینم عملکرد PHP که از ریشه ساخته شده برای لینوکس چقدر میتونه با ویندوز متفاوت باشه، که دیدم خیلی متفاوتهتوی این مقاله سعی کردم از ابتدایی ترین چیزها رو بگم که هرکسی بتونه همه چیو صحیح و درست نصب کنه که مشکلی نداشته باشه. توی ویندوز یه xampp یا wamp یا... رو نصب میکنیم و همه چی آمادست اما توی لینوکس باید تک تک همه چیو نصب کنیم.اول از هر کاری، که دستور آپدیت رو اجرا کنید که لیست پکیج هاتون آپدیت بشه:sudo apt-get updateحالا باید Apache رو نصب کنیم. خب برای نصب Apache اسم پکیجش apache2 هست. پس:sudo apt-get install apache2آپاچی هیچ سوالی نمیپرسه و خیلی پسر خوبیه و خودش نصب میشهحالا که آپاچی رو نصب کردید، تست کنید ببینید درست نصب شده باشه که من تا حالا توی این قسمت مشکلی نداشتم. اگه درست باشه باید وقتی توی مرورگر آدرس localhost رو میزنید، صفحه ای مشابه زیر براتون باز بشه:اگه این صفحه رو توی مرورگر دیدید یعنی آپاچی درست نصب شدهبعد از اون باید PHP رو نصب کنیم. نصب PHP هم مثل آپاچی سادست و اسم پکیجش هم php هست. اما وقتی این پکیج رو میزنید از آخرین نسخه که توی ریپازیتوری اوبونتو هست استفاده میکنه که آخرین نسخه منتشر شده PHP هست و اتوماتیک اونو نصب میکنه اما درصورتیکه میخواستید نسخه خاصی رو نصب کنید، اسم پکیجش به این صورت میشه: php7.x حالا جای این x میتونید از 0 تا هر نسخه ای که منتشر شده قرار بدید.(آخرین نسخه فعلا 7.4 هست که میشه: php7.4)sudo apt-get install phpپکیج php ماژول های مختلفی رو همراه خودش داره. برای اینکه بتونید لیستش رو ببینید، کافیه دستور زیر رو بزنید:php -mخب قاعدتا هر چی کمتر ماژول نصب باشه سرعت بالاتر میره. اما خب خیلی نگران سرعت نباشید. این لینوکسه! هر چی دوست دارید نصب کنید د:اما اگه میخوایید از همین الان ماژول هایی که ممکنه بعدا موقع نوشتن پلاگین و قالب نیازتون بشه رو نصب کنید، اینها پیشنهاد من هستن: php-cli php-json php-mbstring php-mysql php-xml php-xmlrpc php-zipالبته خب این لینوکسه! میتونید بعدا هم نصبشون کنید.یادتون باشه بعد از اینکه ماژول ها رو نصب کردید یا اصلا ماژول هم نصب نکردید و فقط php رو نصب کردید،‌ حتما باید سرویس apache2 رو ریستارت کنید. بعدا اگه ماژول دیگه ای نصب کردید هم باید برای فعال شدنش حتما اینکارو انجام بدید.sudo service apache2 restartحالا یه فایل php توی پوشه/var/www/html/بسازید و تست کنید که کار کنه برای تست تابع phpinfo() رو تست کنید که با یه تیر دو هدف رو زده باشید.(ببینید ماژول ها کار میکنن)اما برنامه سوم که باید نصب کنیم، MySQL. نصب این برنامه مثل اون دوتا دیگه سادست و فقط یه مرحله اضافه دارهاسم پکیجش mysql-server هست. پس:sudo apt-get install mysql-serverیه چیزی که یادتون باید باشه، اینه که حتما ماژول php-mysql هم نصب باشهیه بار دیگه apache رو ریستارت کنید تا همه چی اوکی باشهخب حالا میرسیم به بخش اصلی کانفیگ MySQL. دستور زیر رو اجرا کنید تا نصب اصلی MySQL شروع بشه:sudo mysql_secure_installationاولین چیزی که ازتون میخواد اینه که رمز روت دیتابیس رو وارد کنید: Enter current password for root (enter for none): اینتر رو بزنید.بعد از اون ازتون میپرسه میخواین برای روت رمز بزارید؟(Set root password?) شما Y رو وار کنید و اینتر رو بزنید.حالا یه رمزی رو وارد کنید و حتما اینتر رو بزنید. رمز رو یادتون نره که عوض کردن رمز روت دردسر دارهبعد از اون چهارتا سوال ازتون میپرسه که همه رو Y وارد کنید.اگه آخر کار بهتون پیام های All done! و Thanks for using MariaDB! رو نمایش داد یعنی نصبش تموم شده.خب حالا وارد MySQL میشیم و یه دیتابیس برای وردپرس میسازیم:sudo mysql -uroot -pرمز روت رو هر چی که گذاشتید وارد کنید تا بهتون عبارت:mysql&gt;رو نمایش بده. حالا کوئری ساخت دیتابیس رو بنویسید:یادتون باشه کوئری های MySQL حتما باید با ; تموم بشن تا اجرا بشن.create database wordpress;البته به جای wordpress میتونید هر اسمی که دوست دارید برای دیتابیستون بزارید.اگه موفقیت آمیز باشه باید پیام Query OK, 1 row affected (0.00 sec) رو بهتون بدهخب حالا باید کاربر روت رو به دیتابیس وصل کنیم. دستور زیر رو بزنید:GRANT ALL PRIVILEGES ON wordpress.* TO &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;YOURPASSWORD&#039;;یادتون باشه که به جای YOURPASSWORD حتما رمزتون رو وارد کنید.حالا هم دستور زیر رو بزنید که همه چی اوکی بشه:FLUSH PRIVILEGES;حالا میتونید از MySQL خارج بشید. دستور exit رو داریم، کلید ctrl + D رو هم میتونید بزنید.خب حالا بریم سراغ نصب وردپرس. اول از همه وارد پوشه روت سرور بشید که کارهای مختلفی داریم:cd /var/www/htmlخب الان باید وردپرس رو دانلود کنیم:sudo wget http://wordpress.org/latest.tar.gzدانلودش که تموم شد، این فایل فشرده هست و با دستور زیر از حالت فشرده درش بیارید:sudo tar xzf latest.tar.gzالان فایل های وردپرس توی یه پوشه به نام wordpress قرار دارن. انتخاب با خودتونه که میخواید فایل ها رو بیارید توی روت سرور یا نه. اگه میخواید دستورش اینه:sudo mv wordpress/* .خب قبل از اینکه وارد قسمت نصب خود وردپرس بشیم، دستور تغییر کاربر فایلها رو اجرا کنید:sudo chown -R www-data: .
sudo chown -R www-data: ./*برا شروع عملیات نصب خودکار وردپرس. توی مرورگر آدرس:localhostیا:localhost/wordpressرو بزنید.مراحل نصب وردپرس رو خیلی عادی برید جلو و فکر نکنم اینجا نیازی به توضیح داشته باشه، به جز قسمت اطلاعات دیتابیس که اطلاعات اینها هست:Database name:    wordpressUsername:             rootpassword:             YOURPASSWORDatabase hodt:     localhostیکی از منابع:Build a LAMP Web Server with WordPress</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Mon, 03 Aug 2020 17:22:01 +0430</pubDate>
            </item>
                    <item>
                <title>رفع مشکل اجرا نشدن سرویس MongoDB</title>
                <link>https://virgool.io/@mjkhajeh/%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%D8%AC%D8%B1%D8%A7-%D9%86%D8%B4%D8%AF%D9%86-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-mongodb-sl1y0saoojxg</link>
                <description>سلامیه مشکلی با MongoDB داشتم که نمیدونم چرا بعد از چند ساعت سرویسش غیرفعال شده بود.بعد از کلی سرچ و اجرا دستوراتی مختلف و گرفتن ارورهای مختلف، راه زیر رو تست کردم و جواب داداز جمله ارور هایی که بهم داد اینها بود:Error: couldn&#x27;t connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :Failed to start mongodb.service: Unit not found.Job for mongod.service failed because the control process exited with error code.و اما راهی که استفاده کردم:chown -R mongod:mongod /var/lib/mongodbchown mongod:mongod /tmp/mongodb-27017.sockاین دستور ها میاد کاربری که به این پوشه و فایل دسترسی داره رو تغییر میده به کاربر mongodبعد از این دستورها هم باید سرویس mongo رو از اول اجرا کرد:service mongod startبا این یکی دستور هم میتونید ببینید mongo اجرا شده یا نه:systemctl status mongod.serviceمنبع: digitalocean</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Thu, 09 Jul 2020 17:06:56 +0430</pubDate>
            </item>
                    <item>
                <title>بازکردن Visual Studio Code به عنوان Root در اوبونتو، مینت و...</title>
                <link>https://virgool.io/@mjkhajeh/%D8%A8%D8%A7%D8%B2%DA%A9%D8%B1%D8%AF%D9%86-visual-studio-code-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-root-%D8%AF%D8%B1-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D9%85%DB%8C%D9%86%D8%AA-%D9%88-nhks0dmuedei</link>
                <description>بازکردن Visual Studio Code به عنوان Root در اوبونتو، مینت و...سلامبه عنوان یه برنامه نویس و یه نفر که از VSC استفاده میکنه و با افتخار کاربر لینوکس هم هست(اما نوب د:)، یه مشکل کوچیک که پیش میاد، بازکردن این برنامه به عنوان Root هست.بیخیال چرت و پرت، این کد رو بزنید تا به عنوان Root باز بشه:sudo code --user-data-dir=&amp;quot~/.vscode-root&amp;quot</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 09 Feb 2020 11:46:08 +0330</pubDate>
            </item>
                    <item>
                <title>انتخاب اولین عضو در phpQuery</title>
                <link>https://virgool.io/@mjkhajeh/%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D8%B9%D8%B6%D9%88-%D8%AF%D8%B1-phpquery-jday5fu6h51x</link>
                <description>انتخاب اولین عضو در phpQueryسلامآموزش قبلی که درباره شروع کدنویسی با phpQuery بود و خب کلیات استفاده از phpQuery همون بود.اما مهم تر از اون تکنیک ها و نکاتی هست که توی این کتابخونه جادویی وجود داره.خب توی jQuery و CSS وقتی میخوایم اولین عضو رو انتخاب کنیم، جلو سلکتور :first-child رو مینویسم و همه چی حل میشه. این روش گاهی توی phpQuery جواب میده، گاهی هم نه(نمیدونم چرا، من تجربی یاد گرفتم و خیلی از چیزا دلیلش رو نمیدونم). خلاصه اینکه الان چنتا روش انتخاب اولین عضو(فرزند) رو اینجا نوشتم که اگه یکیش کار نکرد اون یکی کار میکنه. شایدم همش کار کنه د:شروع با مثال عملیاول از همه دوباره بگم تمام روش هایی که گفتم تجربی هست و اگه یکیش براتون جواب نداد بعدی رو تست کنید.فرض کنید میخوایم لینک آخرین گوشی سامسونگ که به توی دسته بندی دیجیکالا اضافه شده رو انتخاب کنیم.خب بخشی از کد جلسه قبل رو می نویسیم:&lt;?php
// Include phpQuery
include_once( &amp;quotphpQuery/phpQuery.php&amp;quot );

// Get page source
$html = file_get_contents&#40; &amp;quothttps://www.digikala.com/search/category-mobile-phone/?q=%D8%B3%D8%A7%D9%85%D8%B3%D9%88%D9%86%DA%AF&amp;entry=mm&amp;quot &#41;;

// Init phpQuery
phpQuery::newDocumentHTML( $html );

$links = &amp;quot&quot;* استفاده خیلی ساده از حلقه foreach()میدونید دیگه میشه توی foreach از عملگر break استفاده کرد. پس وقتی برای یه بار حلقه رو رفت، دستور break میزاریم که از حلقه بیاد بیرون.همیشه برای حل یه مسئله چندین روش وجود داره. توی تمام این روش هایی که نوشتم هم میتونید از pq() استفاده کنید هم از آرایه $doc .استفاده از تابع pq()foreach( pq( &amp;quot.c-listing .c-listing__items li a.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
    break;
}استفاده از آرایه $docforeach( $doc[ &amp;quot.c-listing .c-listing__items li a.c-product-box__img&amp;quot ] as $product_link ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
     break;
}* استفاده از :first-childاستفاده از تابع pq()foreach( pq( &amp;quot.c-listing .c-listing__items li:first-child a.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}استفاده از آرایه $docforeach( $doc[&amp;quot.c-listing .c-listing__items li:first-child a.c-product-box__img&amp;quot] as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}* استفاده از تابع eq() و تابع find()با تابع eq() شما میتونید بهش بگید چندمین عضو(فرزند) رو انتخاب کنه. اولین فرزند هم از 0 شروع میشه. این تابع رو هم توی jQuery داریم.تابع find() همونطور که از اسمش معلومه و توی jQuery هم داریم، کارش پیدا کردن یه سلکتور خاصه. برای این روش هم میتونم کد رو به چند صورت بنویسیم:استفاده از تابع pq()foreach( pq( &amp;quot.c-listing .c-listing__items li&amp;quot )-&gt;eq( 0 )-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}استفاده از آرایه $docforeach( $doc[&amp;quot.c-listing .c-listing__items li&amp;quot]-&gt;eq( 0 )-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}* استفاده از تابع filter() و find()کار تابع filter() مثل تابع filter() توی jQuery هست. و میشه کارهای خاصی روی سلکتور انجام داد.استفاده از تابع pq()foreach( pq( &amp;quot.c-listing .c-listing__items li&amp;quot )-&gt;filter( &amp;quot:first&amp;quot )-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}استفاده از آرایه $docforeach( $doc[&amp;quot.c-listing .c-listing__items li&amp;quot]-&gt;filter( &amp;quot:first&amp;quot )-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
     $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot ); 
}* ترکیب :first-child و تابع find()میتونید روش ها رو با هم ترکیب هم کنید. مثلا میشه :first-child رو با find() هم ترکیب کرد:استفاده از تابع pq()foreach( pq( &amp;quot.c-listing .c-listing__items li:first-child&amp;quot )-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}استفاده از تابع $docforeach( $doc[&amp;quot.c-listing .c-listing__items li:first-child&amp;quot]-&gt;find( &amp;quota.c-product-box__img&amp;quot ) as $product_a ) {
    $link = &amp;quothttps://www.digikala.com&amp;quot . pq( $product_a )-&gt;attr( &amp;quothref&amp;quot );
}خب امیدوارم این آموزش هم براتون مفید باشه و حداقل مشکلی رو حل کرده باشه د:دریافت سورس این قسمت</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Fri, 24 Jan 2020 18:51:16 +0330</pubDate>
            </item>
                    <item>
                <title>شروع کدنویسی با phpQuery</title>
                <link>https://virgool.io/@mjkhajeh/%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-phpquery-fsfhlwh5ukme</link>
                <description>شروع کدنویسی با phpQueryسلامتوی مقاله قبلی درباره خود phpQuery توضیح دادم. الان شروع کنیم برای کد نویسی.خب از اول همه اینکه phpQuery شی گراست و کلاس داره. برای شروع باید بدونید که شما نمیتونید به phpQuery آدرس(url) بدید و باید کد تحویلش بدید. مثلا کد HTML, XML و... . توابعی که داره برای شروع رو اینجا لیست کردم:$doc = phpQuery::newDocumentHTML( $markup ); 
 $doc = phpQuery::newDocumentXML();
 $doc = phpQuery::newDocumentFileXHTML( &#039;test.html&#039; ); 
 $doc = phpQuery::newDocumentFilePHP( &#039;test.php&#039; ); 
 $doc = phpQuery::newDocument( &#039;test.xml&#039;, &#039;application/rss+xml&#039; ); 
 $doc = phpQuery::newDocument( &#039;&lt;div/&gt;&#039; );توی jQuery هر موقع می خوایم ازش استفاده کنیم معمولا از تابع $() استفاده می کنیم. اینجا هم مثل jQuery یه تابع داریم به نام pq(). برای درک راحتترش، هر جایی که توی jQuery از $() استفاده می کردیم، الان اینجا از pq() استفاده کنید.کلاً میشه گفت تابع pq() سلکتور PhpQuery هست.مثال عملیخب به عنوان مثال برای درک بهتر نحوه کد نویسیش، فرض کنید میخوایم لیست تمام گوشی های سامسونگ دیجی کالا رو توی دسته بندی خودش اونم توی صفحه اولش بگیریم و توی یه آرایه ذخیره کنیم:&lt;?php
// Include phpQuery
include_once( &amp;quotphpQuery/phpQuery.php&amp;quot );

// Get page source
$html = file_get_contents&#40; &amp;quothttps://www.digikala.com/search/category-mobile-phone/?q=%D8%B3%D8%A7%D9%85%D8%B3%D9%88%D9%86%DA%AF&amp;entry=mm&amp;quot &#41;;

// Init phpQuery
$doc = phpQuery::newDocumentHTML( $html );

$links = array();
foreach( pq( &amp;quot.c-listing .c-listing__items li a.c-product-box__img&amp;quot ) as $a ) {
    $links[] = &amp;quothttps://www.digikala.com&amp;quot . pq( $a )-&gt;attr( &amp;quothref&amp;quot );
}
print_r( $links );خب کد تقریبا واضح هست. اما در هر حال توضیح لازمه.فایل اصلی phpQuery رو که از گیت هاب دانلود شده فراخوانی می کنیم:include_once( &amp;quotphpQuery/phpQuery.php&amp;quot );با تابع file_get_contents&#40;&#41; شما میتونید محتویات یه فایل رو بخونید اما این تابع میتونه سورس یه صفحه وب رو هم بخونه. البته بهتره به جای استفاده از این روش از cURL استفاده کنید:$html = file_get_contents&#40; &amp;quothttps://www.digikala.com/search/category-mobile-phone/?q=%D8%B3%D8%A7%D9%85%D8%B3%D9%88%D9%86%DA%AF&amp;entry=mm&amp;quot &#41;;حالا که سورس صفحه رو داریم، باید سورس رو تحویل phpQuery بدیم. همونطور که اول کار لیست کردم توابع مختلفی داریم و تابعی که دقیقا برای کار با سورس های HTML هست، تابع newDocumentHTML() هستش:$doc = phpQuery::newDocumentHTML( $html );یه آرایه خالی میسازیم که بتونیم بعدا لینک ها رو داخلش ذخیره کنیم:$links = array();یه حلقه میسازیم که داخلش از تابع pq() استفاده شده. همونطور که میبینید مثل وقتی که با تابع $() توی jQuery کار می کنیم و بهش سلکتور CSS میدیم، اینجا هم دقیقا به همین صورت بهش میدیم.(البته برای حالت های خاص مثل :first-child و... در شرایطی خاصی کار میکنن که بهتره اینها رو قرار ندید و جلوتر میگم چطور حالت های مختلف رو پیاده سازی کنید).این حلقه باعث میشه توی هر دور حلقه ما یکی از تگ های a که یکی از محصولات هست رو انتخاب کنیم:foreach( pq( &amp;quot.c-listing .c-listing__items li a.c-product-box__img&amp;quot ) as $a ) {خب حالا باید هر بار که حلقه اجرا میشه از تگ a، لینکش(href) رو دریافت کنه و به آرایه اضافه کنه:$links[] = &amp;quothttps://www.digikala.com&amp;quot . pq( $a )-&gt;attr( &amp;quothref&amp;quot );توی jQuery اگه مینوشتیم به این صورت میشد:links.push( &amp;quothttps://www.digikala.com&amp;quot + $( a ).attr( &amp;quothref&amp;quot ) );حالا میتونید شباهتشون رو به خوبی ببینید:$() = pq()
. = -&gt;
attr() = attr()و در نهایت هم تمام اعضا آرایه رو نمایش میدیم:print_r( $links );توابع پرکاربرد phpQueryبعضی از توابعی که پر استفاده هم اینجا لیست کردم که میتونید باهاشون کار کنید تا بهتر حساب کار دستتون بیاد:pq( {selector} )-&gt;text(); // متن بین سلکتور را نمایش میده
pq( {selector} )-&gt;html(); // کد HTML بین تگ را باز میگرداند
pq( {selector} )-&gt;find( {tag} ); // داخل سلکتور دنبال یه تگ خاص میگردهسورس کدی که الان نوشتیم</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Wed, 22 Jan 2020 20:21:01 +0330</pubDate>
            </item>
                    <item>
                <title>جادویی به نام phpQuery(آشنایی)</title>
                <link>https://virgool.io/@mjkhajeh/%D8%AC%D8%A7%D8%AF%D9%88%DB%8C%DB%8C-%D8%A8%D9%87-%D9%86%D8%A7%D9%85-phpquery%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-hyhm2na4ripz</link>
                <description>جادویی به نام phpQuery(آشنایی)سلاماگه برنامه نویس وب باشید مطمئنا اسم jQuery رو شنیدید. یه کتابخونه که قابلیت های خارق العاده ای داره و کارهای زیادی میشه باهاش کرد.مقدمه 1:اما چندین سال پیش(فکر کنم 2008 یا همین دور و برا) یه آدم خلاق پیدا شد و یه کتابخونه به نام phpQuery ساخت. خب توی اسمش که واضح PHP هست، پس یه کتابخونه برای PHP هست اما Query رو از jQuery آورده(طبق توضیحات سازنده).مقدمه 2:توی PHP یه کلاس داریم به نام DOMDocument. کارش اینه که شما کد HTML بهش میدید بعد میتونید عناصر توی صفحه رو دستکاری کنید. مثلا دنبال یه لینک خاص از یه صفحه سایت دیگه هستید، اینجاست که باید از DOMDocument استفاده کنید و اون لینک رو بگیرید. اما این DOMDocument اینقدر سخته که وقت زیادی رو باید برای یادگیریش تلف کنید.این phpQuery چیه؟حالا phpQuery اومده و با ترکیب سلکتور ها و بعضی از توابع jQuery و DOMDocument یه کتابخونه کامل ساخته که بتونید به راحتی با عناصر یه صفحه HTML کار کنید.کتابخونه phpQuery همون jQuery نیست...اما توجه داشته باشید: اینجا که اسم jQuery میارم. دقیقا jQuery منظورم نیست و بیشتر فکر کنید مثل ایده گرفتن از jQuery بوده و مثلا اسم یه تابع اگه توی jQuery باشه: attr() توی phpQuery هم attr() هست.کاربرد phpQuery چیه؟کار phpQuery همونطور که گفتم کار با عناصر صفحه HTML هست. فرض کنید شما میخواید عنوان پست های یه سایت رو توی سایت خودتون نمایش بدید اما این سایت هیچ API در اختیار شما قرار نده. خب شما می تونید از jQuery یا کلا JS استفاده کنید. اما اگه بخواید بعدا کارهای دیگه ای با PHP روش انجام بدید خب یکم کارتون سخت تر میشه.اینجا «شاید» بهترین گزینه phpQuery باشه. با استفاده از phpQuery با دستوراتی که داره به راحتی عناوین پست ها رو میگیرد و بعد هر کاری که میخواید روش انجام میدید و همش با استفاده از PHP هست.مقاله بعدی درباره شروع کدنویسی و فراخوانی اون توی فایل PHP خودتون هست.فعلا این لینک های مرتبط با phpQuery رو داشته باشید:لینک پروژه در گوگل کدلینک پروژه سازگار شده با نسخه 7.2 PHPلینک مقالات phpQuery در StackOverflow</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Tue, 21 Jan 2020 21:27:18 +0330</pubDate>
            </item>
                    <item>
                <title>جابجایی، حذف و جایگزینی عناصر صفحه با jQuery(جابجایی)</title>
                <link>https://virgool.io/@mjkhajeh/%D8%AC%D8%A7%D8%A8%D8%AC%D8%A7%DB%8C%DB%8C-%D8%AD%D8%B0%D9%81-%D9%88-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86%DB%8C-%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D8%A7-jquery%D8%AC%D8%A7%D8%A8%D8%AC%D8%A7%DB%8C%DB%8C-oatitcxigges</link>
                <description>جابجایی، حذف و جایگزینی عناصر صفحه با jQuery(جابجایی)سلاماگه برنامه نویس وب باشید به خوبی با jQuery و کاربرد های متنوع اون آشنایی دارید.کتابخونه jQuery یکی از بهترین کتابخونه های JS هست که کارهای عجیب غریبی میشه باهاش کرد.یادم میاد وقتی می خواستم jQuery یاد بگیرم هر چی سرچ می کردم بیشتر نتایج مربوط بود به ساخت افکت های fade و slide که خودش داره و در کل بیشتر مربوط به ساخت انواع افکت. همین باعث شد فک کنم این یه کتابخونست برای ساخت افکت. اما بعد فهمیدم توی دریای امکانات jQuery، ساخت افکت فقط یه جزیرشه.یکی از امکاناتی که jQuery داره و من زیاد ازش استفاده می کنم(معمولا برای سایت مشتری ها) امکان جابجایی، حذف یا جایگزینی المان های صفحه هست. خب من برنامه نویس وردپرسم و جوری که آموزش دیدم(بر خلاف خیلی از برنامه نویس های وردپرس) سعی می کنم برای حل مشکلات مشتری تا حدی که میشه قالب و افزونه ها رو ویرایش نکنم و از به دنبال راه حل های جایگزین باشم(همیشه حداقل یک راه حل دوم وجود داره).خیلی وقت ها مشتری میاد میگه مثلا توضیحات مطلب که نوشته رو من میخوام جابجا کنم و بندازم توی فلان قسمت از مطلب. خب راه های مختلفی وجود داره اما راحت ترین راه(بخوانید: بدترین راه د:) اینه که قالب رو ویرایش کنید و تگ مربوط به توضیحات رو جابجا کنید.اما یه راه دیگه هم وجود داره که یکم پیچیده تره(نه خیلی ولی یکم نیاز داره حوصله داشته باشید) استفاده از jQuery هست.خوشبختانه jQuery توابع مختلفی داره که میشه باهاش یه المان رو جابجا کرد..append();
.appendTo();
.prepend();
.prependTo();خب هر کدوم سر جای خودشون کاربرد دارن.اما اگه ببینید دوتا از توابع یه To آخرشون اضافه دارن. فرق اینها با توابع ساده(append , prepend) توی اینه که موقع نوشتن این که چه المانی باید منتقل بشه توی چه المانی فرق بر عکس هست.(جلوتر بهتر متوجه میشید د:)مثلا این کد رو ببینید:&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Moving using jQuery&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div id=&amp;quotmyDiv1&amp;quot&gt;
            &lt;p&gt;Move me, please!&lt;/p&gt;
        &lt;/div&gt;
        &lt;div id=&amp;quotmyDiv2&amp;quot&gt;
            &lt;h1&gt;Virgool :D&lt;/h1&gt;
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;میخوایم تگ p رو از #myDiv1 منتقل کنیم به #myDiv2. خب کد jQuery که باید بنویسم خیلی ساده و یک خطیه:$( &amp;quot#myDiv2&amp;quot ).append( $( &amp;quot#myDiv1 p&amp;quot ) );حالا اگه میخواستیم از appendTo() استفاده کنیم، اینجوری میشه:$( &amp;quot#myDiv1 p&amp;quot ).appendTo( &amp;quot#myDiv2&amp;quot );خیلی ساده. یعنی توی append، مقصد رو سمت چپ می نویسیم، توی appendTo، مقصد رو سمت راست می نویسیم.(شخصا appendTo رو ترجیح میدم د:)اما حالا فرق append با prepend توی چیه؟همه چیشون مثل همه و فقط توی این زمینه فرق دارن که append میاد اون چیزی که میخواید منتقل کنید رو به آخر مقصد منتقل می کنه.(یعنی مثلا توی کد بالا میره بعد از h1)اما prepend میاد به اول تگ مقصد منتقلش میکنه.(قبل از h1). نحوه نوشتن prepend هم کاملا مثل append هست فقط هر جا دیدید نوشته append شما بزارید prepend.مثال عملی از کاربرد append و prepend رو می تونید توی این صفحه ببینید:http://zobyar.com/?p=6839صفحه رو اگه به حالت گوشی در بیارید، توضیحات منتقل میشه توی یه تگ دیگه.اینم لینک اسکریپتی که این کار رو میکنه:http://zobyar.com/wp-content/plugins/zobyar/assets/js/zobyar.jsآموزش بعدی برای حذف عناصر از صفحه هست.</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 19 Jan 2020 10:56:24 +0330</pubDate>
            </item>
                    <item>
                <title>افزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت آخر)</title>
                <link>https://virgool.io/@mjkhajeh/%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86%DB%8C-%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%D8%B4%D9%86%D9%87%D8%A7%D8%AF%DB%8C-%D9%85%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-visual-studio-code-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%D8%A7%D9%86-%D9%88%D8%A8%D9%82%D8%B3%D9%85%D8%AA-%D8%A2%D8%AE%D8%B1-vtqmmj2mxuk5</link>
                <description>لامافزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت آخر)افزونه های عمومییه سری از افزونه ها هم هستن که خب برای زبان خاصی نیستن و کاربردشون در زمینه های دیگه هست.Code Spell CheckerCode Spell Checkerگاهی پیش میاد کلی کد می نویسید اما یه جایی یه چیزی کار نمیکنه هر چی هم میگردید از نظر منطقی همه چی درسته. اما مشکل از جای دیگست(با فرض اینکه ; رو گذاشته باشید د:). بعد از کلی گشتن می بینید به جای value نوشتید: vlaue :| اون موقع هست که...(دیگه نگم چی میشه بهتره د:)اما افزونه Code Spell Checker رو که نصب کنید این مشکل دیگه براتون پیش نمیاد و وقتی یه کلمه ای رو اشتباه وارد کنید، مشخص میکنه و میتونید سریع درستش کنید.* افزونه Code Spell Checker خودش دیتابیس بزرگی از کلمات داره. * می تونید کلمات خودتون هم با راست کلیک روی هر کلمه به دیتابیسش اضافه کنید* می تونید برای یه پروژه خاص دیتابیس جداگانه بسازید* می تونید بگید بعضی از کلمات رو صرفنظر کنه(ignore)Path IntellisensePath Intellisenseوقتی یه پروژه دارید به مرور تعداد فایلهاتون بیشتر میشه. خب مطمئنا فایل هایی که قرار میدید لازمه که توی پروژه یه جوری لود بشن. حالا بعضی از زبان ها require بعضی ها include و... . اما آدرس دهی وقتی که پوشه هاتون و فایل هاتون زیاد شد یکم سخت میشه. اما وقتی افزونه Path Intellisense رو داشته باشید خیلی راحت می تونید آدرس دهی کنید. فقط کافیه موقع آدرس دهی / رو قرار بدید و افزونه فایلهاتون رو لود میکنه.Project ManagerProject ManagerProject Managerافزونه Project Manager یکی از بهترین و پرکاربرد ترین افزونه های جهان VSCode هست. افزونه Project Manager یه بخش جدید به منو سمت چپ اضافه می کنه که میتونید اونجا لیست پروژه هاتون رو اضافه کنید و با کلیک روی هر کدوم به راحتی کل پروژه رو لود میکنه و اگه دفعات قبل فایل هایی از این پروژه باز بوده باشه هم دوباره باز میشه و جالبتر اینکه دقیقا نشانگر هر جا بوده ایندفعه هم دقیقا همونجا خواهد بود. حتی اگه چند فایل باز بوده باشه، بررسی میکنه وقتی VSCode رو بستید کدوم فایل فعال بوده و دوباره دقیقا تب همون فایل فعال میشه و میتونید ادامه بدید.خب و تامام د:توی این سه پست افزونه هایی که خودم استفاده می کنم رو معرفی کردم، امیدوارم مفید باشه و باعث بشه بیشتر از کد نویسی لذت ببریدقسمت اول - تم ها، آیکون ها و افزونه های HTMLقسمت دوم - افزونه های CSS و PHP و Wordpressشاد باشید د:</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Mon, 09 Dec 2019 01:03:40 +0330</pubDate>
            </item>
                    <item>
                <title>افزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت 2)</title>
                <link>https://virgool.io/wptips/%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86%DB%8C-%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%D8%B4%D9%86%D9%87%D8%A7%D8%AF%DB%8C-%D9%85%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-visual-studio-code-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%D8%A7%D9%86-%D9%88%D8%A8%D9%82%D8%B3%D9%85%D8%AA-2-gpjyijnpe143</link>
                <description>سلامافزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت 2)توی قسمت قبل از تم ها، آیکون پک ها و افزودنی های HTML که استفاده می کنم رو معرفی کردم.اما توی این پست میخوام افزودنی های CSS و PHP رو معرفی کنم.CSScss-auto-prefixcss-auto-prefixافزونه css-auto-prefix همونطور که از تصویرش هم پیداست، برای اکشن هایی که پیشوند هایی مثل -webkit- , -moz- و... رو دارن، میاد خودش بصورت خودکار برای همه پیشوند ها کد رو مینویسه و مقادیری که به اکشن میدید رو هم برای همه اکشن های دیگش هم اضافه میکنه.اما مشکلی که این افزونه داره اینه که این اکشن های اضافه رو همیشه آخر محدوده سلکتور مینویسه و گاهی باعث مزاحمت میشه.IntelliSense for CSS class names in HTMLIntelliSense for CSS class names in HTML  این یکی مطمئن نبودم باید برای HTML باشه یا CSS ولی خب اینجا اسمش رو آوردم دیگه د: . کار IntelliSense for CSS class names in HTML اینه که میاد فایل های CSS که به فایل HTML شما لینک شده رو بررسی میکنه و کلاس ها و آیدی های مختلفی که توی فایل CSS ساختید رو ذخیره میکنه و وقتی میخواید به تگی کلاس یا آیدی بدید لیست که ذخیره کرده رو براتون نمایش میده که کارتون راحتتر باشه.PHPافزودنی های CSS من تموم شد! د:و اما از شیرین ترین بخش این مقاله، PHP و Wordpress د:PHP DocBlockerPHP DocBlockerاگه برنامه نویس باشید احتمالا با DocBlocker آشنایی دارید. روشی استاندارد برای نوشتن کامنت برای متغییر ها، توابع، کلاس ها و... هست که از الگو خاصی پیروی میکنه. مثال:&lt;?php
/**
  * @example example1.php Counting in action.
  * @example http://example.com/example2.phps Counting in action by a 3rd party.
  * @example &amp;quotMy Own Example.php&amp;quot My counting.
  */
 function count()
 {
     &lt;...&gt;
 }افزونه PHP DocBlocker برای نوشتن سریعتر این کامنت هست. شما با قرارا دادن /** بالای سر تابع، متغییر، کلاس یا... و زدن اینتر میبیند که الگو خاصی نوشته میشه که شما فقط باید توضیحات خودتون رو جایگزین کنید.سایت phpDocumentor هم اگه فایلهاتون رو بهش بدید براتون یه راهنما میسازه که از همین DocBlocker استفاده می کنه.Autocomplete WordPress HooksAutocomplete WordPress Hooks  عبارت هوک(Hook) برای برنامه نویس های وردپرس خیلی آشناست. چون هر کاری توی وردپرس بخواید انجام بدید باید از یه Hook استفاده کنید. د:البته به هوک ها API هم میگن. خب وردپرس تعداد زیادی هوک داره که به دو دسته اکشن و فیلتر تقسیم میشن. حفظ کردن این هوک ها کار بیهوده ای هست و معمولا وقتی یه چیزی نیاز داریم از حضرت گوگل استفاده می کنیم د:اما خب بعضی از هوک ها از بس پر استفاده هستن دیگه حفظ میشن. افزونه Autocomplete WordPress Hooks میاد لیست این هوک ها رو به VSCode اضافه میکنه و وقتی میخواید از توابع add_action یا add_filter استفاده کنید، این لیست رو براتون نمایش میده(مثل تصویر).WooCommerce - Snippets &amp;amp;amp;amp; autocompleteWooCommerce - Snippets &amp; autocomplete  اگه برنامه نویس وردپرس باشید میدونید که یکی از افزونه های محبوب وردپرس، ووکامرس هست. ووکامرس برای ساخت فروشگاه اینترنتی کاربرد داره.این افزونه توابع ووکامرس به همراه توضیحاتشون رو به VSCode اضافه می کنه و کد نویسی برای ووکامرس رو خیلی راحتتر میکنه. این افزونه از فیلتر ها و اکشن های ووکامرس هم پشتیبانی میکنه.WordPress SnippetsWordPress Snippets  این افزونه هم نیازی به توضیح نداره و از عنوانش معلومه د:با استفاده از WordPress Snippets می تونید توابع وردپرس رو به همراه توضیحات به ادیتور اضافه کنید. میشه گفت این افزونه ضروری ترین افزونه برای یه برنامه نویس وردپرس هست.قسمت بعدی درباره چند افزونه عمومی رو معرفی میکنم و دیگه تمومه! د:قسمت اول - تم ها، آیکون ها و افزونه های HTMLقسمت آخر - افزودنی های عمومیخوش باشید د:</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 08 Dec 2019 15:49:46 +0330</pubDate>
            </item>
                    <item>
                <title>افزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت 1)</title>
                <link>https://virgool.io/wptips/%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86%DB%8C-%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%D8%B4%D9%86%D9%87%D8%A7%D8%AF%DB%8C-%D9%85%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-visual-studio-code-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%D8%A7%D9%86-%D9%88%D8%A8%D9%82%D8%B3%D9%85%D8%AA-1-iffosc5cejei</link>
                <description>سلامافزودنی های پیشنهادی من برای Visual Studio Code برای طراحان وب(قسمت 1)این پست صرفا بر اساس تجربه خودم نوشتم و اگه افزونه دیگه ای میشناسید که میتونه مفید باشه خیلی عالی میشه معرفی کنید د:از اونجایی که خودم هم وردپرس کارم در آخر چندتا افزونه برای وردپرس هم معرفی می کنم.تم هابرای یه ویرایشگر کد تمی که انتخاب میشه خیلی مهمه چون قراره ساعت ها باهاش ور برید و خیلی مهمه که چشمتون اذیت نشه.Atom One Dark ThemeAtom One Dark Themeبا اینکه از ویرایشگر Atom خوشم میاد اما با VSCode احساس راحت تری دارم، به همین خاطر این تم از بین تم هایی که وجود داره بیشتر پسندم میشه و خب به اندازه کافی از رنگ های مختلف استفاده کرده که بشه راحت سینتکس های مختلف رو هم از تشخیص داد.Tokyo NightTokyo Night  این تم زیاد معروف نیست. اما خب به نظرم زیبا بود به خاطر همین توی این پست قرارش دادم. این افزونه خودش شامل دو تم میشه: Tokyo Night و Tokyo Night Storm که هر دو زیبان. تصویری هم که قرار دادم مربوط به نسخه Storm هست.آیکون هاMaterial Icon ThemeMaterial Icon Theme  پک آیکون های متریال از محبوب ترین پک های آیکونی هست که توی مارکت VSCode موجوده. این پک به تعداد خیلی زیاد آیکون داره و علاوه بر آیکونی که برای فایل ها قرار میده، آیکون برای پوشه هم داره که تشخیصشون توی قسمت فایل منیجر VSCode راحتتر باشه.(عکسی که قرار دادم نصف اصل عکسی که توی صفحه خود افزونه هست هم نیست)vscode-iconsvscode-icons  این پک آیکون هم یکی از محبوب ترین های VSCode هست. این پک توسط تیم سازنده VSCode طراحی شده اما به شخصه پک متریال رو ترجیح میدم.افزودنی های HTMLAuto Close TagAuto Close Tag  شاید یکی از مفیدترین و ضروری ترین افزونه های VSCode برای HTML همین باشه. همونطور که از اسمش معلومه، تگ ها رو بصورت خودکار تشخیص میده و میبنده.این افزونه یه قابلیت هم داره که اگه یه تگ رو باز کنید اما نبندینش وقتی کارتون تموم شد با نوشتن /&gt; خودش بصورت خودکار تگ رو میبنده اما بصورت پیشفرض غیرفعاله و باید از منو File &gt; Preferences &gt; Settings &gt; Extensions &gt; Auto Close Tag configuration گزینه Sublime Text3 mode رو تیک بزنید.Auto Rename TagAuto Rename Tagاین افزونه هم ساخت همون کسی هست که افزونه Auto Close Tag رو ساخته و این هم افزونه خیلی خوب و جالبی هست. Auto Rename Tag همونطور که از اسمش پیداست و از تصویری که قرارداده، وقتی اسم یه تگ رو عوض میکنید، اگه تگ بسته داشته باشه بصورت خودکار تغییر میکنه که دیگه نیاز نباشه دوباره تغییرش بدید.HTML SnippetsHTML Snippets  خب این یکی تصویر خاصی نداره و توضیح خاصی هم نداره. میاد بعضی از تگ ها و خاصیت هایی که توی HTML5 هست رو به VSCode اضافه میکنه و بعضی از مشکلاتی که VSCode با HTML5 داره رو رفع میکنه.تا اینجا برای فعلا کافیه و به زودی یه مقاله دیگه برای CSS و PHP ارسال میکنم.قسمت دوم - افزونه های CSS و PHP و Wordpressقسمت آخر - افزودنی های عمومیخوش باشید د:</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 08 Dec 2019 15:20:34 +0330</pubDate>
            </item>
                    <item>
                <title>مخفی کردن نوشته(پست) های بدون عنوان در وردپرس</title>
                <link>https://virgool.io/@mjkhajeh/%D9%85%D8%AE%D9%81%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D9%86%D9%88%D8%B4%D8%AA%D9%87%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D8%A8%D8%AF%D9%88%D9%86-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%AF%D8%B1-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-u2ysqdqe5mdw</link>
                <description>سلامHide posts without post title (hpwpt)این چی هست؟این افزونه رو خودم نوشتم و کارش اینه که بیاد نوشته(پست) هایی که عنوان ندارن رو مخفی کنه.یه قسمت تنظیمات هم داره که می تونید تنظیم کنید کدوم پست تایپ ها پست هاشون مخفی بشه و کدوم ها نشه.این افزونه تمام قسمت هایی که یه پست نمایش میده هست و اگه فعال باشه جلو نمایش اون پست(ها) رو از هر جایی میگیره. چه توی پیشخوان باشه، چه توی لیست پست ها، چه توی صفحه اصلی(فرونت اند) سایت و... .چندزبانهجوری افزونه رو طراحی کردم که از خاصیت چند زبانی وردپرس به طور کلی پشتیبانی میکنه و اگه سایتی دارید که نه فارسی و نه انگلیسی هست، میتونید ترجمش کنید به هر زبونی که بخواید.زبان پیشفرض افزونه که مطمئنا انگلیسی هست اما خودم به فارسی هم ترجمش کردم.تست کنیدخوشحال میشم تستش کنید و هر مشکلی دیدید یا پیشنهادی داشتید مطرح کنید. حتما رسیدگی می کنم. د:دانلود رایگان افزونه از مخزن وردپرس</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 08 Dec 2019 05:00:04 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه انتخاب اولین کاراکتر از رشته(string) در PHP</title>
                <link>https://virgool.io/@mjkhajeh/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1-%D8%A7%D8%B2-%D8%B1%D8%B4%D8%AA%D9%87string-%D8%AF%D8%B1-php-sxvoskkcmpgl</link>
                <description>سلامPHPاز اونجایی که برنامه نویسا خسته تر از اینن که توضیحات بخونن، بیخیال توضیحات میشم و مستقیما کد رو می نویسم :)&lt;?php
$str = &amp;quotHello World!&amp;quot
echo $str[0];
?&gt;
---------------------
نتیجه:
Hبا این روش می تونید اولین کاراکتر از رشته رو بگیرید.به جای 0 میتونید جایگاه هر کاراکتر رو بنویسید و اون رو تحویل بگیرید.</description>
                <category>محمدجعفر خواجه</category>
                <author>محمدجعفر خواجه</author>
                <pubDate>Sun, 08 Dec 2019 02:49:09 +0330</pubDate>
            </item>
            </channel>
</rss>