প্রসঙ্গ
আমি বিশটি তেরটি ভিত্তিক একটি চাইল্ড থিম তৈরি করেছি যা বেশ ভাল কাজ করে। প্যারেন্ট থিমটি সংস্করণ ১.৩ এ আপডেট করার পরে আমি স্টাইলিংয়ের সাথে এক অদ্ভুত আচরণ লক্ষ্য করেছি যা ক্যাশেড প্যারেন্ট থিমের কারণে হয়েছিল style.css
।
এখানে আমার শিশু থিমের বিষয়বস্তু রয়েছে style.css
(বাদ দেওয়া শিরোনামগুলি)
/* =Imports styles from the parent theme
-------------------------------------------------------------- */
@import url('../twentythirteen/style.css');
সুতরাং চাইল্ড থিমগুলি style.css
পিতামাতার থিমটি আমদানি করা ছাড়া আর কিছুই করে না style.css
।
আমার চাইল্ড থিমের কাস্টমাইজেশনগুলির সাথে আমার আরও একটি সিএসএস ফাইল রয়েছে যা আমি এ জাতীয় পছন্দ করি functions.php
:
// Enqueue parent theme's style.css (faster than using @import in our style.css)
$themeVersion = wp_get_theme()->get('Version');
// Enqueue child theme customizations
wp_enqueue_style('child_main', get_stylesheet_directory_uri() . '/css/main.css',
null, $themeVersion);
এটি আমাকে এর মতো একটি দুর্দান্ত সিএসএস ইউআরএল দেয়: domain.com/wp-content/themes/toutprettoutbon/css/main.css?ver=1.0.1
এটি নিশ্চিত করে যে চাইল্ড থিমটি আপডেট করা হলে স্টাইল শিটটি পুনরায় লোড করা হয়েছে।
এখন সমস্যা
বিবৃতিটি @import url('../twentythirteen/style.css');
অন্তর্নিহিত প্যারেন্ট থিমের সংস্করণ থেকে সম্পূর্ণ স্বতন্ত্র। আসলে, পিতামাত থিমটি চাইল্ড থিম আপডেট না করে আপডেট করা যেতে পারে তবে ব্রাউজারগুলি এখনও পুরানো সংস্করণের ক্যাশেড সংস্করণ ব্যবহার করবে ../twentythirteen/style.css
।
কুড়িটি তেরে প্রাসঙ্গিক কোড যা এটিকে উত্সাহিত করে style.css
:
function twentythirteen_scripts_styles() {
// ...
// Add Genericons font, used in the main stylesheet.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' );
// Loads our main stylesheet.
wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );
// Note usage of get_stylesheet_uri() which actually enqueues child-theme/style.css
// Loads the Internet Explorer specific stylesheet.
wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '2013-07-18' );
}
add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' );
আমি এই সমস্যাটি সমাধানের কয়েকটি উপায় সম্পর্কে ভাবতে পারি তবে সত্যই সন্তোষজনক নয়:
প্রতিবারের সংস্করণটির স্ট্রিং
style.css
(উদাহরণস্বরূপ@import url('../twentythirteen/style.css?ver=NEW_VERSION');
) পরিবর্তন করতে প্যারেন্ট থিম আপডেট করা হলে প্রতিবার আমার শিশু থিমটি আপডেট করুন । এটি পিতা-মাতার থিম সংস্করণ এবং সন্তানের মধ্যে একটি অপ্রয়োজনীয় এবং বিরক্তিকর লিঙ্ক তৈরি করে।আমার সন্তানের মধ্যে
functions.php
, 1)wp_dequeue_style
অন্তর্ভুক্ত চাইল্ড থিমstyle.css
এবং 2) পিতাwp_enqueue_style
- মাতার থিমেরstyle.css
সরাসরি সংস্করণ স্ট্রিংয়ের সাথে। এটি প্যারেন্ট থিমটিতে সারিবদ্ধ সিএসএসের ক্রমকে বিভ্রান্ত করে।style_loader_tag
উত্সাহিত সিএসএস<link>
ট্যাগের জন্য উত্সাহিত সিএসএস ট্যাগটিstyle.css
সংশোধন করতে এবং সরাসরি সংস্করণ স্ট্রিংয়ের সাথে প্যারেন্ট থিমেরstyle.css
সাথে নির্দেশ করার পথটি পরিবর্তন করতে ফিল্টারটি ব্যবহার করুন । এ জাতীয় সাধারণ প্রয়োজন (ক্যাশে বস্টিং) এর চেয়ে বরং অস্পষ্ট বলে মনে হচ্ছে।style.css
আমার চাইল্ড থিমের মূল পিতা থিমগুলি ডাম্প করুনstyle.css
। (1) হিসাবে একই, তবে কিছুটা দ্রুত।আমার শিশু থিমটিকে
style.css
পিতামাতার থিমের একটি সিমিলিংক করুনstyle.css
। এটি বেশ হকিশ বলে মনে হচ্ছে ...
আমি কিছু মিস করেছি? কোন পরামর্শ?
সম্পাদন করা
যোগ করা হয়েছে genericicons.css
এবং ie.css
পিতা বা মাতা থিমে স্টাইল শীট নির্মল কেন আমি পরিবর্তন করতে পারবেন না @import
সিএসএস বিবৃতি wp_enqueue_style
আমার সন্তানের থিম হবে। বর্তমানে, @import
আমার চাইল্ড থিমের একটি বিবৃতি সহ style.css
, উত্পন্ন পৃষ্ঠাগুলিতে আমার এই আদেশ রয়েছে:
- বিশ শতক / জেনেরিকনস / জেনেরিকনস সিএস -> পিতামাতার থিম দ্বারা সজ্জিত
- চাইল্ড-থিম / স্টাইল
- ত্রয়োদশ / সিএসএস / ie.css -> মূল থিম দ্বারা সজ্জিত
- চাইল্ড-থিম / CSS / main.css -> চাইল্ড থিম দ্বারা সজ্জিত
যদি আমি পিতামাতার style.css
নির্ভরতা হিসাবে সজ্জিত করি তবে এটি main.css
হয়ে যাবে:
- বিশ শতক / জেনেরিকনস / জেনেরিকনস সিএস -> পিতামাতার থিম দ্বারা সজ্জিত
- চাইল্ড-থিম / স্টাইল। CSS -> খালি, পিতামাতার থিম দ্বারা সজ্জিত
- ত্রয়োদশ / সিএসএস / ie.css -> মূল থিম দ্বারা সজ্জিত
- বিশ / তের / স্টাইল.এসএস -> মেইন সিএসএসের নির্ভরতা হিসাবে শিশু থিম দ্বারা সজ্জিত
- চাইল্ড-থিম / CSS / main.css -> চাইল্ড থিম দ্বারা সজ্জিত
নোট করুন যে ie.css এখন প্যারেন্ট থিমের আগে অন্তর্ভুক্ত রয়েছে style.css
। আমি পিতামাতার থিমের সিএসএস ফাইলগুলির মজাদার ক্রমটি পরিবর্তন করতে চাই না কারণ আমি ধারণা করতে পারি না যে এটি সিএস বিধিগুলির অগ্রাধিকার নিয়ে সমস্যা সৃষ্টি করবে না।
style.css
এখনকার মতো একই জায়গায় অন্তর্ভুক্ত করা হবে না। পিতামাতার মধ্যে অন্যান্য CSS ফাইল অন্তর্ভুক্ত রয়েছে যা অবশ্যই এটির style.css
এবং আমার চাইল্ড থিমের সিএসএসের মধ্যে আসবে ।
@import
, পরিবর্তে পিতামাতার থিমের স্টাইলশিটটিকে নিজের স্টাইলশীটের নির্ভরতা হিসাবে সেট করুন ।