আমি প্রতিটি সন্তানের স্টাইলশিট / বিবৃতি * প্রতিটি পিতামাতার স্টাইলশিট / বিবৃতি দেওয়ার পরে কীভাবে করব?


11

আমি চিপ বেনেটের আমার নিজের চাইল্ড থিমের প্যারেন্ট হিসাবে ভাল-লিখিত ওনোলজি থিমটি ব্যবহার করছি।

আমার বিকাশ প্রক্রিয়াতে, আমি আবিষ্কার করেছি যে শিশুদের থিমগুলি লেখার ক্ষেত্রে শৈলীগুলি নিয়ন্ত্রণ করার ক্ষেত্রে কিছু চ্যালেঞ্জ রয়েছে।

আমি সবেমাত্র আবিষ্কার করেছি যে আমার প্রধান স্টাইল। CSS ফাইলটি <অন্য শিরোনামে প্রতিটি স্টাইলশিট লিঙ্ক বা বিবৃতি দেওয়ার আগে লোড হয়ে গেছে, এবং এটি ব্যাখ্যা করে যে আমাকে কেন পিতামাতার কিছু স্টাইলকে ওভাররাইড করতে সমস্যা হচ্ছিল।

সমস্যার আরও অধ্যয়ন থেকে দেখা যায় যে বিভিন্ন পিতামাতার স্টাইলশিট এবং শৈলীগুলি তিন জায়গায় <হেড> এ সারিবদ্ধ হতে পারে; add_action('wp_print_styles',, add_action('wp_enqueue_scripts',এবং তারপর add_action('wp_head',

জিনিসগুলি সহজ রাখতে, আমি দুটি স্টাইলশিট তৈরি করার পরিকল্পনা করছি। @import url()ওয়ানোলজির প্রধান স্টাইলশিটটি লোড করার জন্য প্রথম প্রধান 'স্টাইল.এসএস' শীটটিতে কেবল কমান্ড অন্তর্ভুক্ত থাকবে ।

দ্বিতীয় স্টাইলশিটে আমার সন্তানের নিয়ম থাকবে। এটি অন্যান্য নিয়মের সমস্ত পরে লোড হয়েছে তা নিশ্চিত করার জন্য , আমি এটি ব্যবহার করে সারিবদ্ধ করব add_action( 'wp_head',

এই শব্দ কি যুক্তিসঙ্গত? বা এটি করার আরও ভাল (আরও সঠিক) উপায় আছে?

বিটিডব্লিউ, কেউ কি জানেন /'Parettheme/style.css ? এমআরপ্রিভিউ রিফ্রেশ = 723 'এর অর্থ কী?

হালনাগাদ

wp_enqueue_style () wp_head () এ কাজ করে না বলে মনে হয়।

চিয়ার্স,
গ্রেগরি

উত্তর:


21

শুধু এফওয়াইআই, এই প্রশ্নটি সম্ভবত খুব স্থানীয়করণের সীমানা , কারণ এটি ওনোলজি থিমের সাথে সুনির্দিষ্ট।

এটি বলেছিল, এখানে আমার মনে হয় আপনার কোনও সমস্যা হচ্ছে: ওনোলজি দুটি স্টাইল শীট সরবরাহ করে:

  1. style.cssসরাসরি ডকুমেন্টের মাথায় (এভাবে আগে wp_head() বরখাস্ত করা হয়)
  2. {varietal}.css, এ wp_enqueue_scripts, অগ্রাধিকার সহ 11, এতে functions/dynamic-css.php:

    /**
     * Enqueue Varietal Stylesheet
     */
    function oenology_enqueue_varietal_style() {
    
    // define varietal stylesheet
    global $oenology_options;
    $oenology_options = oenology_get_options();
    $varietal_handle = 'oenology_' . $oenology_options['varietal'] . '_stylesheet';
    $varietal_stylesheet = get_template_directory_uri() . '/varietals/' . $oenology_options['varietal'] . '.css';
    
    wp_enqueue_style( $varietal_handle, $varietal_stylesheet );
    }
    // Enqueue Varietal Stylesheet at wp_print_styles
    add_action('wp_enqueue_scripts', 'oenology_enqueue_varietal_style', 11 );

ভেরিয়েটাল স্টাইলশীট, যা "ত্বক" প্রয়োগ করে, অগ্রাধিকার ভিত্তিতে এনকুইজ করে 11, বেস স্টাইলশীটটি প্রথমেstyle.css লোড হয় এবং ভেরিয়েটাল স্টাইলশিট দ্বিতীয়বার লোড হয় তা নিশ্চিত করার জন্য, সঠিক ক্যাসকেড তৈরি করতে পারে।

সুতরাং, যদি আপনাকে ভেরিয়েটাল স্টাইলশিটটি ওভাররাইড করতে হয় তবে কেবল দ্বিতীয় স্টাইলশিটটি ভেরিয়েটাল স্টাইলশিটের পরে সজ্জিত করুন; অর্থাত্ কমপক্ষে 12বা তার চেয়েও বেশি অগ্রাধিকার সহ ।

সম্পাদন করা

আরও সাধারণ প্রশ্নের আরও সাধারণ উত্তর প্রদান করতে:

প্যারেন্ট থিমের স্টাইলশিট এনকুইতে ওভাররাইড করতে আপনার দুটি জিনিস জানতে হবে:

  1. কর্ম হুক যা স্টাইলশীট enqueued হয়
  2. অগ্রাধিকার যা কলব্যাক হুক যোগ করা হয়

এনেকু ফাংশন ( wp_enqueue_script()/ wp_enqueue_style()) হুক এবং / হুকের মধ্যে যে কোনও জায়গায় যথাযথভাবে সম্পাদন করা যায় । ( ক্রিয়াকলাপগুলি কার্যকর করার জন্য শব্দার্থগতভাবে সঠিক হুকটি বর্তমানে )) এই তালিকায় নিম্নলিখিত ক্রিয়াগুলি অন্তর্ভুক্ত রয়েছে (অন্যদের মধ্যে; এগুলি কেবলমাত্র সাধারণ সন্দেহভাজন):initwp_print_scriptswp_print_styleswp_enqueue_*()wp_enqueue_scripts

  • init
  • wp_head
  • wp_enqueue_scripts
  • wp_print_scripts/wp_print_styles

(নোট যে wp_enqueue_scripts, wp_print_stylesএবং wp_print_scripts সব আগুন ভিতরে এর wp_headএকটি নির্দিষ্ট অগ্রাধিকার এ

সুতরাং, প্যারেন্ট-থিম স্টাইলশিটটি ওভাররাইড করার জন্য আপনাকে নিম্নলিখিতগুলির একটি করতে হবে:

  • এর মাধ্যমে প্যারেন্ট-থিম স্টাইলশিটটি ডি-এনকুই করুনwp_dequeue_style( $handle )
  • অভিভাবক থিম কলব্যাক সরান যা শৈলীর মাধ্যমে তৈরি করেremove_action( $hook, $callback )
  • আপনার চাইল্ড-থিম স্টাইলশীট wp_enqueue_style()কলটিকে কম অগ্রাধিকারের সাথে বা পরে হুকের মধ্যে একই হুকটিতে হুক করে প্যারেন্ট-থিম স্টাইলশিটটিকে ওভাররাইড করতে সিএসএস ক্যাসকেড ব্যবহার করুন

    এই শেষ বিকল্পের জন্য, যদি মূল থিম ব্যবহার করে:

    `add_action( 'wp_enqueue_scripts', 'parent_theme_enqueue_style', $priority )`

    ... তাহলে চাইল্ড থিমটি ব্যবহার করবে:

    `add_action( 'wp_enqueue_scripts', 'child_theme_enqueue_style', {$priority + 1} )`

ধন্যবাদ চিপ আমার চাইল্ড স্টাইলশীটটি শেষের দিকে লোড পেতে আমি সত্যিই wp_enqueue_script এবং একটি উচ্চতর অর্ডিনাল ব্যবহার করতে পারি। আমার চাইল্ড স্টাইলশিট স্টেটমেন্টের পরে এখনও 3 টি আলাদা স্টাইলের স্টেটমেন্ট রয়েছে। এর মধ্যে 2 টি ডাব্লুপি নিজেই আউটপুট !!! এবং 1 টি ডব্লিউপি এর অ্যাড_কাস্টম_আইমেজ_হেডার () ফাংশনের মাধ্যমে ওনোলজি দ্বারা আউটপুট।
গ্রেগরি

বডি কাস্টম-ব্যাকগ্রাউন্ড স্টাইলের স্টেটমেন্টটি ডাব্লুপি নিজেই আউটপুট, তবে এটি 'BACKGROUND_COLOR' সংজ্ঞায়িত করে একটি কাস্টম পটভূমির রঙ নির্দিষ্ট করতে পারি বলে মনে হয়। আশ্চর্যজনক যে একটি বেসিক সিএসএস নিয়মটি কাস্টম ডাব্লুপি ধ্রুবকের মাধ্যমে সেট করা দরকার।
গ্রেগরি

1
শেষ মন্তব্য চিপ। এই প্রশ্ন হল না খুব স্থানীয়। অনেক থিম শৈলীর সারণী বা মুদ্রণের জন্য উপলভ্য সমস্ত হুক ব্যবহার করবে এবং চাইল্ড থিম বিকাশকারীরা কীভাবে এই স্টাইলগুলি অকারণে অক্ষম না করে ওভাররাইড করবেন তা জানতে হবে। চিয়ার্স।
গ্রেগরি

আমি এটির সাথে যে সমস্যাটি দেখছি তা হ'ল চাইল্ড থিম_ইনকুই_ স্টাইল চাইল্ড স্টাইলকে একটি উচ্চ অগ্রাধিকার দিয়ে লোড করবে, আরও ডাব্লুপি_হেডের নীচে এটি চাইল্ড স্টাইলশিটের নকল করবে - ওয়ার্ডপ্রেস স্বয়ংক্রিয়ভাবে শিশু স্টাইলশীটটিকে তার স্বাভাবিক অগ্রাধিকারে লোড করবে এবং তারপরে আবার লোড করবে, আরও নতুন অগ্রাধিকার সহ নিচে। এটি অন্যান্য সমস্ত স্টাইলশিটকে ওভাররাইড করার ফলাফল অর্জন করার সময় এটি পৃষ্ঠায় একটি সদৃশ স্টাইলশিট তৈরি করে।
পিএইচপি-বি-গ্রেডার

2

আমার শৈলীর ক্যাসকেডে চূড়ান্ত বক্তৃতা দেওয়ার গ্যারান্টি দেওয়ার একমাত্র উপায় হ'ল ডাব্লুপি_হেড হুকের মাধ্যমে <হেড> এর শেষে এগুলি অন্তর্ভুক্ত করা ছিল। wp_enqueue wp_head এর মধ্যে কাজ করে না তাই আমাকে লিঙ্কটি সরাসরি প্রতিধ্বনিত করতে হয়েছিল:

function gregory_enqueue_stylesheets() {
    $base = get_stylesheet_directory_uri();
    echo '<link rel="stylesheet" href="'.$base.'/style-gregory.css" type="text/css" media="all">';
    return;
}
add_action( 'wp_head', 'gregory_enqueue_stylesheets', 18 );

শেষ অবধি, আমি তুলনামূলক স্বাচ্ছন্দ্য সহ আমার স্টাইলগুলি সেট করতে পারি এবং উচ্চ মাত্রার নির্দিষ্টতা ব্যবহার না করে বা! গুরুত্বপূর্ণ নিয়মটি যা কেবলমাত্র শেষ অবলম্বন হিসাবে ব্যবহার করা উচিত।

ডব্লিউপি এর জন্য আরও ভাল স্টাইলের এনকুইউং সিস্টেম দরকার। প্রতিটি স্টাইল, কোনও ফাইল লিঙ্ক বা একটি ইনলাইন শৈলী, অগ্রাধিকার তাদের অর্ডার নির্ধারণের অনুমতি দিয়ে একই হুকের মধ্য দিয়ে যেতে হবে। ডিবাগিং উদ্দেশ্যে allyচ্ছিকভাবে, হুক যদি প্রতিটি স্টাইলের অগ্রাধিকার মানগুলি সম্ভবত মন্তব্য আকারে আউটপুট করে তবে এটি কার্যকর হবে।

হালনাগাদ

মূল স্টাইলশীট, একটি সাব-স্টাইলশিট এবং কয়েকটি স্টাইলের বিবৃতি ব্যবহার করে) আমার শৈলীর পত্রকে দু'ভাগে বিভক্ত করে আমি পিতা-মাতার থিমের মূল ক্যাসকেড বজায় রেখে আমার শিশু থিমের শৈলীর নিয়ন্ত্রণ ধরে রাখতে সক্ষম হয়েছি প্রশ্নটি. আমার স্টাইলশীটটি শেষের দিকে লোড হচ্ছে কিনা তা নিশ্চিত করার জন্য আমি উচ্চতর অর্ডিনাল সহ সঠিক এবং মানসম্পন্ন wp_enqueue_script () হুক ব্যবহার না করে wp_head () হুক ব্যবহার করব না।

আমার শিশু থিমের ডিফল্ট স্টাইলশিট:

/*
Theme Name: Oenology-Gregory
Template: oenology
Version: 20120506-0026
*/

@import url("/wp-content/themes/oenology/style.css");

আমার প্রধান স্টাইলশিটটি সজ্জিত করার জন্য ফাংশন:

function gregory_enqueue_stylesheets() {
    $base = get_stylesheet_directory_uri();
    wp_enqueue_style( 'style-gregory', $base.'/style-gregory.css' );
    return;
}
add_action( 'wp_enqueue_scripts', 'gregory_enqueue_stylesheets', 18 );

আমার স্টাইলশিটের পরে বর্ণিত কয়েকটি ডাব্লুপি-উত্পাদিত স্টাইলের স্টেটমেন্ট (যেমন, প্যারেন্ট থিম নয়) রয়েছে এবং আমাকে যে বিধিগুলি উদ্বেগিত হয়েছে তার উপর ভিত্তি করে উচ্চতর স্পষ্টতা সিএসএস বিধিগুলি ব্যবহার করতে হবে, বা সন্ধান করতে হবে এগুলিকে অক্ষম করার জন্য হুকগুলি বিশেষত বডি কাস্টম-ব্যাকগ্রাউন্ড নিয়ম।

আপনাদের মন্তব্যগুলোর জন্য সবাইকে ধন্যবাদ.

চিয়ার্স,
গ্রেগরি


1

আপনার স্টাইলশীটটি লোড করার জন্য আপনার সর্বদা ব্যবহার wp_enqueue_style()করা উচিত এবং সেই ফাংশনগুলি ডাব্লু_প্রেমী_স্ক্রিপ্টের হুকের সাথে মাথায় রান করা উচিত । আমি সন্দেহ করি যে আপনি এটি সেখানে ঝুঁকছেন না, সুতরাং আপনার সমস্যা। (ডাব্লুপিপি ৩.৩ অনুসারে, যদি wp_enqueue_style()অন্য কোনও কিছুতে আবদ্ধ থাকে তবে এটি ডাব্লুপি_ডিবগ চালু করে একটি নোটিশ দেয়)।


@ চিপের উত্তর আমার চেয়ে ভাল এবং তিনি ওনোলজি থিমটি নিয়ে আলোচনা করার পক্ষে তর্কসাপেক্ষভাবে আরও দক্ষ;) এটি কি এমন একটি ঘটনা যেখানে আমার উত্তরটি সঠিক-ইশ হওয়া সত্ত্বেও আমার মুছে ফেলা উচিত?
mrwweb

না, আমি তোমার উত্তর ছেড়ে দেব এটি সঠিক, এবং প্রশ্নের একটি নির্দিষ্ট অংশকে সম্বোধন করে।
চিপ বেনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.