<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pranto Mollick</title>
    <description>The latest articles on DEV Community by Pranto Mollick (@prantomollick).</description>
    <link>https://dev.to/prantomollick</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F893253%2F947518bd-4906-4d42-b963-f901089aa28a.png</url>
      <title>DEV Community: Pranto Mollick</title>
      <link>https://dev.to/prantomollick</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prantomollick"/>
    <language>en</language>
    <item>
      <title>🚀 How to Set Up a Virtual Host in XAMPP (C:) to Run WordPress from Another Drive (G:)</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Mon, 18 Aug 2025 09:59:44 +0000</pubDate>
      <link>https://dev.to/prantomollick/how-to-set-up-a-virtual-host-in-xampp-c-to-run-wordpress-from-another-drive-g-150m</link>
      <guid>https://dev.to/prantomollick/how-to-set-up-a-virtual-host-in-xampp-c-to-run-wordpress-from-another-drive-g-150m</guid>
      <description>&lt;h2&gt;
  
  
  1. Install &lt;a href="https://www.apachefriends.org/" rel="noopener noreferrer"&gt;XAMPP&lt;/a&gt;(Already Installed)
&lt;/h2&gt;

&lt;p&gt;Make sure Apache and MySQL modules are running from the XAMPP Control Panel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m0so7b1ts9xts9a2srk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m0so7b1ts9xts9a2srk.png" alt=" " width="665" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Download/Edit WordPress on G:
&lt;/h2&gt;

&lt;p&gt;Extract WordPress, say, to G:\wordpress.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Create a Database for WordPress
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="http://localhost/phpmyadmin" rel="noopener noreferrer"&gt;http://localhost/phpmyadmin&lt;/a&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Click "Databases", create a new database (e.g., wordpress_db).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Set Permissions (if needed)
&lt;/h2&gt;

&lt;p&gt;Make sure your user account has read/write permissions for G:\wordpress.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Configure Apache Virtual Hosts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;a. Edit httpd-vhosts.conf:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;C:\xampp\apache\conf\extra\httpd-vhosts.conf&lt;/code&gt; with a text editor (running as Administrator).&lt;/li&gt;
&lt;li&gt;Add a block like this at the end:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
    ServerName gamestore-dev.local
    ServerAlias gamestore-dev.local
    DocumentRoot "G:/wordpress"
    &amp;lt;Directory "G:/wordpress"&amp;gt;
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    &amp;lt;/Directory&amp;gt;
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Replace mywordpress.local with your desired local domain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;b. Ensure mod_vhost and mod_rewrite are Enabled&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;code&gt;C:\xampp\apache\conf\httpd.conf&lt;/code&gt;, make sure these lines are uncommented (no #):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa58rizy6uxnhlj0qgybg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa58rizy6uxnhlj0qgybg.png" alt=" " width="800" height="525"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Include "conf/extra/httpd-vhosts.conf"
LoadModule rewrite_module modules/mod_rewrite.so
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Edit Your hosts File
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open Notepad as Administrator.&lt;/li&gt;
&lt;li&gt;File &amp;gt; Open: &lt;code&gt;C:\Windows\System32\drivers\etc\hosts&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add this line at the end:
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9oadac9g3oczugee19k7.png" alt=" " width="750" height="110"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    127.0.0.1   mywordpress.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Restart Apache
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the XAMPP Control Panel, stop and start Apache.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Install WordPress
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Visit &lt;a href="http://mywordpress.local" rel="noopener noreferrer"&gt;http://mywordpress.local&lt;/a&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Run the installation wizard.&lt;/li&gt;
&lt;li&gt;Enter your database info:
&amp;gt;    - Database Name: wordpress_db
&amp;gt;    - Username: root
&amp;gt;    - Password: (leave blank unless you set one)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Test
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You should see the WordPress setup page from &lt;code&gt;G:\wordpress&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Log in to your WordPress site as normal.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: &lt;br&gt;
For multiple projects, just replicate the  block with different folders and domain names.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>xampp</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Fetching Upcoming Events in WordPress with WP_Query (English + Bengali)</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Mon, 11 Aug 2025 09:47:15 +0000</pubDate>
      <link>https://dev.to/prantomollick/fetching-upcoming-events-in-wordpress-with-wpquery-english-bengali-4ijl</link>
      <guid>https://dev.to/prantomollick/fetching-upcoming-events-in-wordpress-with-wpquery-english-bengali-4ijl</guid>
      <description>&lt;p&gt;Learn to fetch upcoming WordPress events with WP_Query: numeric date sorting, meta_query filters, and a bilingual walkthrough (EN + BN).&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you're building a WordPress site that needs to show upcoming events—like a school's "Science Fair" or a community "Sports Day"—you'll often reach for WP_Query. In this post, we'll walk through a practical snippet that fetches the next two upcoming events, explain exactly how it works, why it's written this way, and how to extend it. You'll see the English explanation side-by-side with Bengali to make the concepts stick.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — What this code does (Context)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;br&gt;
We're querying the WordPress database to get the next two upcoming "event" posts, sorted by a custom field called event_date so the soonest events appear first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;br&gt;
আমরা ওয়ার্ডপ্রেস ডাটাবেসে কোয়েরি চালিয়ে 'event' টাইপের পরবর্তী দুইটি ইভেন্ট আনছি। এগুলোকে event_date নামের কাস্টম ফিল্ড দিয়ে সাজানো হচ্ছে, যাতে দ্রুত আসছে এমন ইভেন্টগুলো আগে দেখা যায়।&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2 — The core snippet
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'posts_per_page'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'post_type'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'meta_key'&lt;/span&gt;       &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'orderby'&lt;/span&gt;        &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'meta_value_num'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'order'&lt;/span&gt;          &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'ASC'&lt;/span&gt;
&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Looping through results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;have_posts&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;have_posts&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;the_post&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Example output:&lt;/span&gt;
    &lt;span class="c1"&gt;// the_title();&lt;/span&gt;
    &lt;span class="c1"&gt;// echo get_post_meta(get_the_ID(), 'event_date', true);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;wp_reset_postdata&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;posts_per_page limits results to two.&lt;/li&gt;
&lt;li&gt;post_type ensures we're only looking at events.&lt;/li&gt;
&lt;li&gt;meta_key tells WP_Query which custom field controls sorting.&lt;/li&gt;
&lt;li&gt;orderby =&amp;gt; meta_value_num sorts numerically (ideal for YYYYMMDD or timestamps).&lt;/li&gt;
&lt;li&gt;order =&amp;gt; ASC means earliest dates appear first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;posts_per_page মানে আমরা ২টি রেজাল্ট চাই।&lt;/li&gt;
&lt;li&gt;post_type =&amp;gt; event মানে কেবল ইভেন্ট পোস্টই আনবো।&lt;/li&gt;
&lt;li&gt;meta_key দিয়ে কোন কাস্টম ফিল্ডে সাজাবো তা বলা হয়েছে।&lt;/li&gt;
&lt;li&gt;orderby =&amp;gt; meta_value_num সংখ্যাগতভাবে সাজায় (YYYYMMDD বা timestamp আদর্শ)।&lt;/li&gt;
&lt;li&gt;order =&amp;gt; ASC মানে আগের তারিখ আগে দেখাবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3 — How the data flows
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: An array of arguments (post_type, meta_key, orderby, etc.).&lt;/li&gt;
&lt;li&gt;Processing: WP_Query translates this into SQL for MySQL.&lt;/li&gt;
&lt;li&gt;Database: Filters to event posts, looks at event_date, sorts ascending, returns top 2.&lt;/li&gt;
&lt;li&gt;Output: A WP_Query object in $events you can loop through.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ইনপুট: আর্গুমেন্টের অ্যারে (post_type, meta_key, orderby, ইত্যাদি)।&lt;/li&gt;
&lt;li&gt;প্রসেসিং: WP_Query এটিকে SQL-এ রূপান্তর করে।&lt;/li&gt;
&lt;li&gt;ডাটাবেস: event পোস্ট ফিল্টার, event_date দেখে সাজানো, শীর্ষ ২ ফেরত।&lt;/li&gt;
&lt;li&gt;আউটপুট: $events অবজেক্ট, যেটি লুপ করে দেখানো যায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4 — Why this approach is best practice
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;br&gt;
Let the database do the heavy lifting. Sorting/filtering in MySQL via WP_Query is faster and more memory-efficient than fetching everything and sorting in PHP. Using orderby =&amp;gt; meta_value_num ensures dates stored as numbers (e.g., 20251107 or Unix timestamps) sort correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;br&gt;
ফিল্টারিং/সোর্টিং ডাটাবেসেই করাই শ্রেয়। WP_Query MySQL-এ কাজ করায় দ্রুত ও কম মেমরি লাগে। meta_value_num ব্যবহার করলে সংখ্যায়িত তারিখ (যেমন 20251107 বা timestamp) ঠিকভাবে সাজে।&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 5 — Common pitfalls and fixes
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1) Dates sorting wrong (e.g., "December" before "November")
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause:&lt;/strong&gt; Dates stored as strings ("December 1, 2025").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Store event_date as numeric (YYYYMMDD or Unix timestamp). Keep orderby =&amp;gt; meta_value_num.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2) Getting posts from other types
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause:&lt;/strong&gt; Missing post_type =&amp;gt; event.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Ensure post_type is set to event.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3) Showing past events before upcoming
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cause:&lt;/strong&gt; ASC is fine, but you also need to filter out past dates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Add a meta_query to only include today or future.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: only today/future&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Ymd'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'posts_per_page'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'post_type'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'meta_key'&lt;/span&gt;       &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'orderby'&lt;/span&gt;        &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'meta_value_num'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'order'&lt;/span&gt;          &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'ASC'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'meta_query'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="s1"&gt;'key'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'value'&lt;/span&gt;   &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$today&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'compare'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'&amp;gt;='&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'type'&lt;/span&gt;    &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'NUMERIC'&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6 — Excluding cancelled events (extension)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;br&gt;
If you store an event_status custom field and want to exclude "Cancelled" events:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;br&gt;
event_status নামে কাস্টম ফিল্ড থাকলে "Cancelled" বাদ দিতে:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WP_Query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'posts_per_page'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'post_type'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'meta_key'&lt;/span&gt;       &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'orderby'&lt;/span&gt;        &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'meta_value_num'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'order'&lt;/span&gt;          &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'ASC'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'meta_query'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'relation'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'AND'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="s1"&gt;'key'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_status'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'value'&lt;/span&gt;   &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Cancelled'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'compare'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'!='&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="s1"&gt;'key'&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'value'&lt;/span&gt;   &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Ymd'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="s1"&gt;'compare'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'&amp;gt;='&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s1"&gt;'type'&lt;/span&gt;    &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'NUMERIC'&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 7 — Quick analogy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;English:&lt;/strong&gt;&lt;br&gt;
Think of WP_Query as asking a librarian: "Please find books from the 'events' shelf, sort them by date from soonest to latest, and give me just the top two." The librarian searches the stacks (database), sorts properly, and returns exactly what you asked for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bengali:&lt;/strong&gt;&lt;br&gt;
WP_Query হল লাইব্রেরিয়ানকে বলা: "events শেলফ থেকে বই নিন, তারিখ অনুযায়ী (নিকটতম আগে) সাজান, আর শীর্ষ দুইটি দিন।" লাইব্রেরিয়ান (ডাটাবেস) ঠিক সেভাবেই ফলাফল দেয়।&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus — Display template idea
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;have_posts&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"upcoming-events"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Upcoming Events&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;have_posts&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$events&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;the_post&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;the_permalink&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nf"&gt;the_title&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; 
            &lt;span class="nv"&gt;$date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_post_meta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get_the_ID&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s1"&gt;'event_date'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="c1"&gt;// Format YYYYMMDD to Y-m-d for readability&lt;/span&gt;
              &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;' — '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;createFromFormat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Ymd'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'M j, Y'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
          &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;endwhile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nf"&gt;wp_reset_postdata&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Mini Quiz
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1) Easy: How would you change the code to fetch the next 5 events?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; Change posts_per_page =&amp;gt; 2 to posts_per_page =&amp;gt; 5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2) Medium: Dates look out of order—what's a likely cause?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; event_date stored as human text (e.g., "December 1, 2025") instead of numeric (YYYYMMDD). Store numeric and use meta_value_num.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3) Hard: How do you exclude events with event_status = "Cancelled"?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Answer:&lt;/strong&gt; Add a meta_query with compare =&amp;gt; '!=' on key event_status, plus your date constraint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Store dates numerically (YYYYMMDD or Unix timestamps) for reliable sorting.&lt;/li&gt;
&lt;li&gt;Use meta_value_num for numeric meta sorting.&lt;/li&gt;
&lt;li&gt;Filter out past events with a meta_query against today's date.&lt;/li&gt;
&lt;li&gt;Extend with additional conditions (status, venue, capacity) via meta_query.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wordpress</category>
      <category>php</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🎓 Mastering WordPress Font Enqueue with Google Fonts: Real Interview Questions with Bilingual Explanations</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Sun, 27 Jul 2025 08:12:07 +0000</pubDate>
      <link>https://dev.to/prantomollick/mastering-wordpress-font-enqueue-with-google-fonts-real-interview-questions-with-bilingual-21m2</link>
      <guid>https://dev.to/prantomollick/mastering-wordpress-font-enqueue-with-google-fonts-real-interview-questions-with-bilingual-21m2</guid>
      <description>&lt;p&gt;If you're a WordPress developer aiming to crack interviews or just want to level up your theme development game, understanding how to enqueue Google Fonts is crucial. In this post, we’ll dive into a real-world code snippet and break down everything from &lt;strong&gt;function logic to interview questions&lt;/strong&gt; — all explained in &lt;strong&gt;English and Bengali&lt;/strong&gt; with memory tricks and analogies.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Code We’ll Explore
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;gamestore_google_fonts&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$font_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nv"&gt;$font_family&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Urbanist:ital,wght@0,400;0,700;1,400;1,700'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'off'&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nf"&gt;_x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'on'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Google font: on or off'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'gamestore'&lt;/span&gt; &lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$query_args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s1"&gt;'family'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$font_family&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'subset'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'latin,latin-ext'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'display'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'swap'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nv"&gt;$font_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;add_query_arg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$query_args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'//fonts.googleapis.com/css2'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$font_url&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;gamestore_google_font_script&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$font_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;gamestore_google_fonts&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="k"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$font_url&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;wp_enqueue_style&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'gamestore-google-fonts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;esc_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$font_url&lt;/span&gt; &lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nf"&gt;wp_get_theme&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'Version'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'wp_enqueue_scripts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'gamestore_google_font_script'&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 What This Code Does
&lt;/h2&gt;

&lt;p&gt;✅ Dynamically builds a Google Fonts URL&lt;br&gt;
✅ Loads the font into your theme using &lt;code&gt;wp_enqueue_style()&lt;/code&gt;&lt;br&gt;
✅ Supports conditional disabling and version-controlled caching&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Real Interview Questions &amp;amp; Bilingual Explanations
&lt;/h2&gt;

&lt;p&gt;Here are &lt;strong&gt;realistic interview questions&lt;/strong&gt; based on this code and how to &lt;strong&gt;answer them with analogies and Bengali translations&lt;/strong&gt; to help you remember them.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. &lt;strong&gt;What does &lt;code&gt;wp_enqueue_style()&lt;/code&gt; do?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Loads CSS in a proper, WordPress-managed way.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; এটি সিএসএস ফাইল লোড করে সঠিকভাবে, ডুপ্লিকেট লোড হওয়া থেকে বাঁচায়।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Like placing a file in a queue for printing.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;E = Enqueue = Enter into Queue&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. &lt;strong&gt;Why use &lt;code&gt;esc_url()&lt;/code&gt;?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Sanitizes the URL to prevent malicious injections.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; URL-এ হ্যাকারদের ক্ষতিকর স্ক্রিপ্ট ঢুকতে না দেওয়ার জন্য এটি পরিষ্কার করে।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Washing vegetables before cooking.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Escape harmful input = ESC → esc_url()&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. &lt;strong&gt;What is the use of &lt;code&gt;add_action()&lt;/code&gt; here?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Hooks your function to run at a specific point (&lt;code&gt;wp_enqueue_scripts&lt;/code&gt;).&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; নির্দিষ্ট সময়ে ফাংশন চালানোর জন্য এটি WordPress-এ যুক্ত করে।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Like telling your assistant when to serve coffee.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Hook = Trigger Point&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. &lt;strong&gt;How are Google Fonts added dynamically?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; URL query strings are used to define fonts, weights, and subsets.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; ফন্ট, ওজন, এবং সাবসেট নির্ধারণ করতে URL query string ব্যবহার করা হয়।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Ordering a pizza with specific toppings.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Query = Instruction to Google Fonts&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. &lt;strong&gt;Why use &lt;code&gt;_x()&lt;/code&gt; instead of &lt;code&gt;__()&lt;/code&gt; or &lt;code&gt;_e()&lt;/code&gt;?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; &lt;code&gt;_x()&lt;/code&gt; allows context-aware translation.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; &lt;code&gt;_x()&lt;/code&gt; দিয়ে একই শব্দের বিভিন্ন অর্থ context অনুযায়ী ট্রান্সলেট করা যায়।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Example:&lt;/strong&gt; “Post” could mean blog post or mail.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;code&gt;x = eXtra info&lt;/code&gt; → Use when context matters&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  6. &lt;strong&gt;What happens if &lt;code&gt;_x()&lt;/code&gt; returns 'off'?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; The font won’t be loaded, which helps with performance or localization.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; &lt;code&gt;_x()&lt;/code&gt; 'off' রিটার্ন করলে ফন্ট লোড হবে না, এটা কিছু দেশে দরকার হতে পারে।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Use case:&lt;/strong&gt; Chinese users where Google is blocked.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Translation = ON/OFF switch&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  7. &lt;strong&gt;How to make the font customizable from the WordPress Customizer?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Use &lt;code&gt;get_theme_mod()&lt;/code&gt; to dynamically fetch the selected font.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; Customizer থেকে &lt;code&gt;get_theme_mod()&lt;/code&gt; দিয়ে ফন্টের নাম dynamically নেওয়া যায়।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Letting the user choose their outfit before an event.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Customizer = Personalization Panel&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  8. &lt;strong&gt;Why use &lt;code&gt;wp_get_theme()-&amp;gt;get('Version')&lt;/code&gt; instead of a fixed version?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; It automatically updates the version for cache busting.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; থিম আপডেট হলে CSS কেশে ফাইল আটকে না থাকে।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Putting a version sticker on a product.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Version = Cache Breaker&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  9. &lt;strong&gt;How to load multiple fonts or preload for performance?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Combine multiple &lt;code&gt;family&lt;/code&gt; values or use &lt;code&gt;wp_resource_hints&lt;/code&gt; for preload.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; একাধিক ফন্ট একসাথে যুক্ত করে বা preload করলে পারফরম্যান্স বাড়ে।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Buying multiple tickets in one booking = fewer HTTP requests.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Preload = VIP Access&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  10. &lt;strong&gt;Why use &lt;code&gt;//fonts.googleapis.com&lt;/code&gt; instead of &lt;code&gt;https://&lt;/code&gt;?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EN:&lt;/strong&gt; Protocol-relative URLs support both HTTP and HTTPS.&lt;br&gt;
&lt;strong&gt;BN:&lt;/strong&gt; সাইটের প্রোটোকল অনুযায়ী স্বয়ংক্রিয়ভাবে ঠিক URL ব্যবহার হয়।&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Analogy:&lt;/strong&gt; Letting the elevator decide which floor you’re on.&lt;br&gt;
🧠 &lt;strong&gt;Memory Hook:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;// = Smart Link (protocol auto-adjusts)&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Final Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Answer Summary&lt;/th&gt;
&lt;th&gt;Bengali Keyword&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wp_enqueue_style()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Adds CSS to WordPress safely&lt;/td&gt;
&lt;td&gt;সঠিকভাবে CSS লোড&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;esc_url()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cleans URL&lt;/td&gt;
&lt;td&gt;URL নিরাপদ করা&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;add_action()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hooks function into WP event&lt;/td&gt;
&lt;td&gt;নির্দিষ্ট সময়ে ফাংশন&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic Fonts&lt;/td&gt;
&lt;td&gt;Fonts via query string&lt;/td&gt;
&lt;td&gt;ফন্ট URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;_x()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Contextual translation&lt;/td&gt;
&lt;td&gt;কনটেক্সট অনুযায়ী অনুবাদ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;_x() = off&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Disables font loading&lt;/td&gt;
&lt;td&gt;ফন্ট বন্ধ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customizer Fonts&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;get_theme_mod()&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;কাস্টোমাইজার ফন্ট&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Theme Version&lt;/td&gt;
&lt;td&gt;Cache busting&lt;/td&gt;
&lt;td&gt;কেশে সমস্যা সমাধান&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple Fonts&lt;/td&gt;
&lt;td&gt;Combine in one query&lt;/td&gt;
&lt;td&gt;একাধিক ফন্ট&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;//&lt;/code&gt; URL&lt;/td&gt;
&lt;td&gt;Protocol-relative&lt;/td&gt;
&lt;td&gt;HTTP/HTTPS auto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>wordpress</category>
      <category>themes</category>
    </item>
    <item>
      <title>🚀 Mastering WSL 2 and Docker on Windows: What I Learned, Real-World Use Cases, and Interview Prep</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Thu, 24 Jul 2025 05:40:59 +0000</pubDate>
      <link>https://dev.to/prantomollick/mastering-wsl-2-and-docker-on-windows-what-i-learned-real-world-use-cases-and-interview-prep-59b9</link>
      <guid>https://dev.to/prantomollick/mastering-wsl-2-and-docker-on-windows-what-i-learned-real-world-use-cases-and-interview-prep-59b9</guid>
      <description>&lt;p&gt;As a Windows user diving into modern development workflows, I recently explored &lt;strong&gt;WSL 2 (Windows Subsystem for Linux)&lt;/strong&gt; and integrated it with &lt;strong&gt;Docker Desktop&lt;/strong&gt; — and it was a game-changer!&lt;/p&gt;

&lt;p&gt;In this post, I’ll break down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ What I learned from installing and configuring WSL 2&lt;/li&gt;
&lt;li&gt;🌍 How these skills apply in real-world development&lt;/li&gt;
&lt;li&gt;🎯 Interview questions I’m now prepared to answer&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ What I Learned
&lt;/h2&gt;

&lt;p&gt;WSL 2 is a tool that allows you to run a &lt;strong&gt;real Linux kernel inside Windows&lt;/strong&gt;, making it ideal for local development, especially when paired with Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here's what I learned step-by-step:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Check System Requirements&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Windows 10 (build 1903+) or Windows 11 (WSL 2 built-in)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install WSL 2 (Automatically or Manually)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;PowerShell command:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; wsl --install
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manual alternative: enable features via DISM, install the Linux kernel update package, and set default version to 2.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install a Linux distribution (e.g., Ubuntu)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Via Microsoft Store → Set it up with username/password&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Verify Installation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; wsl --list --verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install Docker Desktop&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;During installation, enable &lt;strong&gt;WSL 2 integration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Connect Docker to your Linux distro in Docker Settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This entire setup creates a powerful hybrid environment: Windows + Linux + Docker — right on your desktop.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Services I Can Offer (Freelancer or Team Contributor)
&lt;/h2&gt;

&lt;p&gt;Now that I understand this system deeply, I can offer real-world tech services like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;💼 Service&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WSL 2 &amp;amp; Docker Setup&lt;/td&gt;
&lt;td&gt;Help devs or businesses set up WSL 2 and Docker Desktop on Windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local Dev Environment&lt;/td&gt;
&lt;td&gt;Build Linux-based dev environments for Laravel, Django, Node.js, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker Containerization&lt;/td&gt;
&lt;td&gt;Dockerize apps and teach others how to use Docker on Windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevOps Assistant&lt;/td&gt;
&lt;td&gt;Assist with Linux + Docker pipelines, CI/CD, and local test environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Troubleshooting Support&lt;/td&gt;
&lt;td&gt;Solve Docker/WSL issues that Windows users frequently face&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These services are in demand on &lt;strong&gt;remote job boards&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;Here’s how this knowledge applies in real-life projects:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;How It Works&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧑‍💻 Full-Stack Web Dev&lt;/td&gt;
&lt;td&gt;Run Linux-only tools (like Nginx, Redis, PHP) on Windows via WSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🐳 Container Dev&lt;/td&gt;
&lt;td&gt;Build and test Docker images before deploying to cloud (AWS/GCP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🐍 Python/ML Projects&lt;/td&gt;
&lt;td&gt;Use Jupyter, TensorFlow, and PyTorch inside Linux via WSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧪 CI/CD Testing&lt;/td&gt;
&lt;td&gt;Simulate Linux pipelines locally with Docker containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 Dev Workflow Boost&lt;/td&gt;
&lt;td&gt;No need for dual-booting or switching to Linux — best of both worlds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🎯 Interview Questions You Now Ready For
&lt;/h2&gt;

&lt;p&gt;These are the kinds of questions that can come up in DevOps, Backend, or Full-Stack roles:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 WSL 2 Focused
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What is WSL 2 and how does it differ from WSL 1?&lt;/li&gt;
&lt;li&gt;How do you manage multiple Linux distros on WSL?&lt;/li&gt;
&lt;li&gt;What are the limitations of WSL 2?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Docker with WSL 2
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Why is WSL 2 preferred for Docker Desktop on Windows?&lt;/li&gt;
&lt;li&gt;How does Docker Desktop integrate with WSL?&lt;/li&gt;
&lt;li&gt;How do you troubleshoot Docker-Windows-WSL issues?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 General System Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;How do you set up a dev environment for Linux-based applications on Windows?&lt;/li&gt;
&lt;li&gt;What PowerShell commands are used to enable WSL features?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 WSL 2 Related
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. What is WSL and how is WSL 2 different from WSL 1?&lt;/strong&gt;&lt;br&gt;
Think of WSL like a translator who helps Windows speak Linux. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;WSL 1 is like Google Translate — it converts Linux commands into Windows language, but it’s not perfect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WSL 2 is like hiring a native Linux speaker (a full Linux kernel!) and giving them their own room inside your Windows PC.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short:&lt;br&gt;
WSL 1 fakes Linux, WSL 2 runs real Linux inside a small virtual machine — faster, more powerful, and closer to real Linux.&lt;/p&gt;

&lt;p&gt;**&lt;a href="https://learn.microsoft.com/en-us/windows/wsl/compare-versions#wsl-in-the-microsoft-store" rel="noopener noreferrer"&gt;2. How do you install and configure WSL2 on Windows?&lt;/a&gt;&lt;br&gt;
just open PowerShell as Admin and Run:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf152jcyphwna9mna8so.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf152jcyphwna9mna8so.png" alt=" " width="727" height="325"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable necessary windows features&lt;/li&gt;
&lt;li&gt;Install Ubuntu&lt;/li&gt;
&lt;li&gt;Set WSL 2 as the default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s like ordering a Linux room service — it arrives ready to use!&lt;br&gt;
If it doesn’t work, you can do it manually using a few commands (enabling features, installing Linux kernel, restarting, and downloading a distro like Ubuntu).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Can you run Linux-only tools on Windows using WSL 2? How?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, and it’s magical! ✨&lt;br&gt;
magine you want to cook a Bengali recipe but you only have a Western kitchen. WSL 2 brings a real Bengali kitchen inside your Western home. You can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run Bash&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;apt&lt;/code&gt; to install packages&lt;/li&gt;
&lt;li&gt;Use Linux web servers like Apache&lt;/li&gt;
&lt;li&gt;Compile code using GCC&lt;/li&gt;
&lt;li&gt;Run Python, Node, PHP with native linux behaviour. 
All without leaving windows. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. What are the limitations of WSL 2?&lt;/strong&gt;&lt;br&gt;
Every superhero has a weakness 💔&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It uses a lightweight VM in the background → more RAM&lt;/li&gt;
&lt;li&gt;Slower file access between Windows ↔ Linux (use /home, avoid /mnt/c )&lt;/li&gt;
&lt;li&gt;No full support for USB devices or kernel modules&lt;/li&gt;
&lt;li&gt;Some system services (like &lt;code&gt;systemd&lt;/code&gt;) needed workarounds (fixed in latest WSL)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analogy:&lt;br&gt;
You invited Linux to your house (Windows), but you can’t let them use your Wi-Fi (USB access) or let them renovate your house (low-level hardware stuff).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. How do you manage multiple Linux distros in WSL?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can install many flavors of Linux: Ubuntu, Debian, Kali, etc.&lt;/p&gt;

&lt;p&gt;🔧 Check list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --list --verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔁 Set default:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --set-default Ubuntu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔄 Change version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --set-version Ubuntu 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔹 Docker + WSL 2 Integration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;6. Why is WSL 2 preferred for Docker on Windows?&lt;/strong&gt;&lt;br&gt;
Docker runs best on Linux, but Windows doesn’t speak Linux natively.&lt;br&gt;
🧠 With WSL 2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You get a real Linux kernel&lt;/li&gt;
&lt;li&gt;Docker can run natively, not emulated&lt;/li&gt;
&lt;li&gt;It’s faster, lighter, and more efficient&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analogy:&lt;br&gt;
It’s like building a pool (Docker) — it works way better on real ground (WSL 2) than on a floating platform (Windows VM).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. What is Docker Desktop, and how does it use WSL 2?&lt;/strong&gt;&lt;br&gt;
Docker Desktop is a GUI tool that makes it easy to manage Docker on Windows. With WSL 2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker doesn’t need a big VM anymore&lt;/li&gt;
&lt;li&gt;It installs inside your WSL distro&lt;/li&gt;
&lt;li&gt;It runs containers as if you're on real Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. How do you troubleshoot Docker not starting on Windows with WSL 2?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Check WSL 2 is installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --list --verbose
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Restart Docker Desktop&lt;br&gt;
✅ Ensure virtualization is enabled in BIOS&lt;br&gt;
✅ Check WSL Integration is turned on in Docker Settings&lt;br&gt;
✅ Run PowerShell as Admin and update kernel if needed&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. What are some real-world advantages of using Docker + WSL 2 for development?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can test Linux apps on Windows&lt;/li&gt;
&lt;li&gt;Use Docker without full VMs → faster builds&lt;/li&gt;
&lt;li&gt;No more dual-booting or cloud deployments just to test things&lt;/li&gt;
&lt;li&gt;Easily build containers for Laravel, Django, React, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
You’re building a Laravel site. Run it in a Docker container in WSL 2, test it, and then push it to production — all from your Windows laptop!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. How do you configure Docker to use a specific WSL distro?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzw3jr2srtvb3ktrdzl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzw3jr2srtvb3ktrdzl6.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open Docker Desktop →&lt;br&gt;
Settings → Resources → WSL Integration → Enable for your preferred distro (e.g., Ubuntu).&lt;/p&gt;

&lt;p&gt;Now Docker knows which kitchen (distro) to use when cooking up containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔹 General System Knowledge
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;11. Explain the role of virtualization in WSL 2.&lt;/strong&gt;&lt;br&gt;
WSL 2 uses a tiny virtual machine to run a real Linux kernel.&lt;br&gt;
🔍 This VM is lightweight, fast, and auto-managed by Windows — you won’t even notice it’s there.&lt;br&gt;
Analogy:&lt;br&gt;
It’s like running a guest Linux computer inside your Windows PC — but it shares your home’s (system’s) electricity and water (RAM and CPU) without making noise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Have you used PowerShell for administrative setup? Give examples.&lt;/strong&gt;&lt;br&gt;
Yes! PowerShell is like the control room of Windows. I’ve used it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing WSL features:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dism.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/online&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/enable-feature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/featurename:Microsoft-Windows-Subsystem-Linux&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/norestart&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Setting default WSL version:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--set-default-version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Installing Docker&lt;/li&gt;
&lt;li&gt;Automating System Task&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;13. How would you set up a development environment for a Linux-based application on Windows?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s say you want to build a Django web app. Here’s how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install WSL 2 and Ubuntu&lt;/li&gt;
&lt;li&gt;Update and install dependencies:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3-pip python3-venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a virtual environment and install Django&lt;/li&gt;
&lt;li&gt;Install Docker Desktop with WSL 2 integration&lt;/li&gt;
&lt;li&gt;Dockerize your Django app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you can code, test, and deploy like you’re on a Linux server — from your Windows machine.&lt;/p&gt;

&lt;p&gt;💡 When you master WSL 2 and Docker together, you unlock a hybrid development world: Linux power, Windows productivity, and cloud-readiness — all from your laptop.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>developer</category>
      <category>windows</category>
      <category>linux</category>
    </item>
    <item>
      <title>test</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Fri, 11 Apr 2025 14:38:05 +0000</pubDate>
      <link>https://dev.to/prantomollick/test-2i18</link>
      <guid>https://dev.to/prantomollick/test-2i18</guid>
      <description></description>
      <category>emptystring</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Pranto Mollick</dc:creator>
      <pubDate>Fri, 11 Apr 2025 14:36:49 +0000</pubDate>
      <link>https://dev.to/prantomollick/fdsg-5c1d</link>
      <guid>https://dev.to/prantomollick/fdsg-5c1d</guid>
      <description></description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
