নাতি নাতনি থিমগুলি তৈরি করা কি সম্ভব?


15

আমি যদি জেনেসিসের মতো জনপ্রিয় ফ্রেমওয়ার্কগুলির একটি ব্যবহার করি তবে নাতি-নাতনি থিমগুলি তৈরি করা কি সম্ভব?

উদাহরণ হিসাবে, আমি জেনেসিসকে আমার সমস্ত সাইটের মেরুদণ্ড হিসাবে ব্যবহার করতে চাই। জেনেসিসকে একটি কাঠামো বলা হয় তবে এটি আসলে একটি মূল থিম।

তারপরে আমি স্টুডিওপ্রেসে বিক্রয়ের জন্য জেনেসিস চাইল্ড থিমগুলির একটি নির্বাচন করি এবং আমার প্রতিটি সাইটের জন্য এটি কাস্টমাইজ করা চালিয়ে যেতে চাই। আমি কি আমার সমস্ত সাইটের জন্য একটি নাতি থিম তৈরি করব এবং আমি কীভাবে এটি ব্যবহার করব?

উত্তর:


18

হ্যা এবং না.

আপনি চাইল্ড থিম তৈরি করতে পারেন যা অন্য সন্তানের থিমকে অভিভাবক হিসাবে উল্লেখ করে এবং ওয়ার্ডপ্রেস এটি ব্যবহার করার চেষ্টা করবে।

যাহোক

আপনি মুখ্য বিষয়গুলিতে চলে যাবেন, উল্লেখ করবেন না যে কোর দেবগণ স্পষ্টভাবে বলেছেন যে এটি আকাঙ্ক্ষিত আচরণ নয় এবং তারা নাতি-নাতনি থিমগুলিকে সমর্থন করার প্রচেষ্টা করবেন না।

উদাহরণস্বরূপ, ডাব্লুপিআই এর স্টাইলশিট এবং টেম্পলেট ইউআরএল / ডিরেক্টরিগুলির মধ্যে পার্থক্য তৈরি করে, যেখানে স্টাইলশীট সর্বদা সক্রিয় থিমকে বোঝায় এবং টেমপ্লেট পিতামাতার থিমকে বোঝায়, তবে যদি কোনও পিতামহী থিম অন্তর্ভুক্ত করা হয় get_template_directory_uriতবে পিতামাতাকে বা পিতামহাকে রেফারেন্স দেয়? প্রচুর এপিআই কলগুলি এখন অস্পষ্ট এবং বিভিন্ন ব্যক্তি মূল কোড সহ বিভিন্ন আচরণের প্রত্যাশা করবে। functions.phpআপনার পিতা বা মাতামহ বা পিতামহী উভয়েরই বোঝা চাপানো দরকার এবং এটি সঠিক ক্রমে সম্পন্ন করা হয়েছে তা নিশ্চিত করতে হবে।

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

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

এখানে একটি বাচ্চাদের মডেলও রয়েছে যেখানে আপনার সন্তানের থিমটিকে বেস হিসাবে তৈরি করা হয় এবং কাঁটাচামচ তৈরি করে বাচ্চাকে / ওভাররাইডের পরিবর্তে অনুলিপিটিতে কাজ করার অভিপ্রায় সহ অভিভাবক হিসাবে না রেখে than


সুতরাং আমার ক্ষেত্রে যদি আমি জেনেসিসের সাথে যাই তবে আমাকে ঠিক সরাসরি চাইল্ড থিমটি সংশোধন করতে হবে? গিতের সাথে খুব বেশি পরিচিত না, তবে এমন একটি পদ্ধতির প্রতি আগ্রহী হবেন যা আমাকে মূল শিশু থিমটি অক্ষত রাখতে সহায়তা করে।
urok93

হ্যাঁ, আপনার কাছে এখানে প্রচুর বিকল্প নেই।
টম জে নোয়েল

আমি যদি আপনি একটি দুর্দান্ত নাতি-থিম তৈরি করার চেষ্টা করেন তবে কী হবে তা আমি ভাবছি।
ক্রিস_ও

1
আপনি উল্লেখ করেছেন যে আপনার যদি এটির প্রয়োজন হয় তবে পদ্ধতিটি একটি ভুল মোড় নিয়েছে। আমি এই বিষয়ে আগ্রহী কারণটি হ'ল WooCommerce Storefront থিম ব্যবহার করার মতো একটি দৃশ্য। তারা স্টোরফ্রন্টে চাইল্ড থিম বিক্রি করে যা বিভিন্ন জিনিসের জন্য কাস্টমাইজ করা হয়। সুতরাং আমি যদি তাদের চাইল্ড থিমগুলির একটি ব্যবহার করি তবে তারপরে আমি আমার নিজস্ব পরিবর্তনগুলি এমনভাবে করতে চাই যে তারা যখন তাদের চাইল্ড থিম আপডেট করবে তখন ওভাররাইট হবে না ... আমি কীভাবে করব?
ড্র এঞ্জেল

1
আমি জানি না, স্টোরফ্রন্ট থিমটি কীভাবে তৈরি করা হয়েছে তার একটি সীমাবদ্ধতা, সেই সময়ে আপনাকে শিশু থিমটি
কাঁটাতে

3

আমি নীচে বর্ণিত পদ্ধতিটি, বা একটি সাধারণ "নাতিপুত্র" থিমটি পুরোপুরি পরীক্ষা করে দেখিনি, তবে টেমপ্লেট_যুক্ত ফিল্টারটির কার্যকারিতা প্রদান করে :

    /*
    Plugin Name: Grandchild Themes
    Plugin URI: http://www.who-cares.com/
    Description: A concept for Grandchild themes Plugin
    Author: See Plugin URI
    Version: 0.0.0.0.1-Alpha
    */

    add_action('wp_head', 'grnd_chld_add_headers', 0);
    add_action('init', 'grnd_chld_add_css');

    // Load template if exists. 
function grandchild_template_include( $template ) {

    if ( file_exists( untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template ) ) )
        $template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/grnd_chld_templates/' . basename( $template );

    return $template;
}

// This is the actual filter that we want .
add_filter( 'template_include', 'grandchild_template_include', 11 );

    function grnd_chld_add_headers () {
        wp_enqueue_style('my_grandchild_style');
    }

    function grnd_chld_add_css() {
        $stamp = @filemtime(plugin_dir_path(__FILE__).'/style.css'); // easy versioning
        wp_register_style ('my_grandchild_style', plugins_url('style.css', __FILE__).'', array(), $stamp);
    }

    // From here , what you got is like a normal functions.php.

আপনি একইভাবে, আরও নির্দিষ্ট ফিল্টার চেষ্টা করতে পারেন যেমন আর্কাইভ_টেমপ্লেট উদাহরণস্বরূপ

add_filter ('archive_template', create_function ('', 'return plugin_dir_path(__FILE__)."archive.php";'));

যা যা বলেছে এবং করেছে, আমি নিশ্চিত নই যে এটি করা সবচেয়ে ভাল উপায়।

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