after_setup_theme সর্বদা চলতে থাকে


11

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

echo '<script type="text/javascript">alert("This action was run")</script>';

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

সুতরাং প্রশ্ন, এটি কি একটি বাগ? আমি কি কোনওভাবে ভুল করছি? এখানে আমি ব্যবহার করছি এমন সম্পূর্ণ কোডটি:

add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
    // -- Unrelated code remove for the sake of brevity 
    require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
    activate_plugin('enable-media-replace/enable-media-replace.php');
    activate_plugin('seo-image/seo-friendly-images.php');
    activate_plugin('w3-total-cache/w3-total-cache.php');
    echo '<script type="text/javascript">alert("This action was run")</script>';
}

যে কোনও অন্তর্দৃষ্টি প্রশংসিত হবে!


সমাধান: after_switch_themeআমি এখানে যা চেয়েছিলাম ঠিক তাই করে। থিমটি আপনার থিমটিতে স্যুইচ করার পরে এটি জ্বলে উঠবে। নীচে উল্লিখিত একটি সমাধান ব্যবহার করে switch_theme। এটির পছন্দসই ফলাফল নেই, কারণ এটি কেবল আপনার থিম থেকে সরে যাওয়ার পরে ঘটে। এই ট্র্যাকের মন্তব্যটি উল্লেখ করুন
অ্যারন ওয়াগনার

আপনার প্রশ্নের মন্তব্য হিসাবে বরং উত্তর হিসাবে পোস্ট করুন । :)
চিপ বনেট

2
দুঃক্ষিত। এটি আমাকে এখনও এটি করতে দেয় না। আমি এটিকে কিছুটা উত্তর হিসাবে যুক্ত করব।
অ্যারন ওয়াগনার

উত্তর:


8

সমাধান: after_switch_themeআমি এখানে যা চেয়েছিলাম ঠিক তাই করে। থিমটি আপনার থিমটিতে স্যুইচ করার পরে এটি জ্বলে উঠবে। নীচে উল্লিখিত একটি সমাধান ব্যবহার করে switch_theme। এটির পছন্দসই ফলাফল নেই, কারণ এটি কেবলমাত্র আপনার থিম থেকে সরে যাওয়ার পরে ঘটে।

এখানে একটি নিবন্ধ যা আমি রেফারেন্স হিসাবে পেয়েছি: http://core.trac.wordpress.org/ticket/7795# মন্তব্য ২৯

আমার সংশোধিত কোডটি এখানে

add_action( 'after_switch_theme', 'fwp_theme_setup' );
function fwp_theme_setup(){ 
    require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
    activate_plugin('enable-media-replace/enable-media-replace.php');
    activate_plugin('seo-image/seo-friendly-images.php');
    activate_plugin('w3-total-cache/w3-total-cache.php');
}

5

after_setup_themeক্রিয়া অভিপ্রেত যে ওয়ার্ডপ্রেস লোড করে গুলি করা হয়। এটি কেবলমাত্র সেই প্রক্রিয়ার অংশ যা সময়ে ওয়ার্ডপ্রেস টেমপ্লেট সিস্টেমটি আহ্বান করে, থিমের জন্য বিভিন্ন সেটআপ প্যারামিটারগুলি নির্ধারণ করে এবং তারপরে প্রসেসিংয়ের মাধ্যমে এগিয়ে যায়, যেমন প্রদর্শন করার জন্য সঠিক টেমপ্লেট নির্ধারণ ইত্যাদি with

অন্য কথায়, after_setup_themeযা বিন্দু প্রতিনিধিত্ব করে ওয়ার্ডপ্রেস বর্তমান থিম, সেট আপ না যা বিন্দু প্রশাসক সক্রিয় এবং / অথবা কনফিগার করে বর্তমান থিম।

আপনি যা খুঁজছেন তা থিম অ্যাক্টিভেশন হুক যা বর্তমানে উপলব্ধ নয়, তবে এটি বিবেচনা / বিকাশের অধীনে রয়েছে


কোডেক্স এন্ট্রি লিঙ্কটি তখন মারাত্মকভাবে বিভ্রান্তিকর। এটি বলে যে "থিমগুলির সূচনা করার সময় এই হুকটি ডাকা হয়।" তার অর্থ, আমার কাছে, হুকটি সক্রিয় হওয়ার পরে ডাকা উচিত। আমি বুঝতে পারছি আপনি কি বলছেন। মারাত্মক বিভ্রান্তিকর।
অ্যারন ওয়াগনার

5
init !== activation। সাধারণত আপনি __construct()পিএইচপি ফাংশন কল একটি initফাংশন। তার অর্থ: উদাহরণটি সূচনা করুন।
কায়সার

ট্র্যাকের টিকিটটি 7 বছরের পুরানো এবং মনে হচ্ছে এটি স্থির হবে না!
numeiaweb

4

দুর্ভাগ্যক্রমে কোনও থিম-অ্যাক্টিভেশন হুক নেই। যাইহোক, একটি প্রশ্ন এটির জন্য একটি কাজের জন্য প্রদান করে।

প্লাগ-ইনগুলি সক্রিয় করতে কেবল 'থিম অ্যাক্টিভেশন হুক' ব্যবহার করুন।

একটি ভাল সমাধান, একই শিরা বরাবর এই এক । উভয়ই মূলত switch_themeহুক ব্যবহার করে ।


ওপি মন্তব্য এবং লিঙ্কযুক্ত ট্র্যাকের টিকিট অনুসারে - after_switch_themeহুক প্রয়োজনীয়।

এটি আর্গুমেন্ট হিসাবে পুরানো থিমের নামটি পাস করে। তবে এটি যদি আপনার functions.php(যা এটি হওয়া উচিত ...) এ থাকে তবে আপনার থিমটি সক্রিয় হওয়ার সময় কলব্যাক কেবল তখনই জ্বলবে

add_action( 'after_switch_theme', 'wpse50298_setup' );
function wpse50298_setup($theme_switching_from){
    // Your theme is being activated
}

একইভাবে একটি কলব্যাক যোগ করুন switch_themeকেবল তখনই কল করা হবে যখন আপনার থিমটি সক্রিয় করা হবে।

add_action( 'switch_theme', 'wpse50298_deactivate' );
function wpse50298_deactivate($theme_switching_to){
    // Your theme is being deactivated
}

এই বিকল্পগুলির কোনোটাই আমার পক্ষে কাজ করে নি। switch_themeশুধুমাত্র থিমটি নিষ্ক্রিয় করার পরে কাজ করেছে। তবে after_switch_themeপুরোপুরি কাজ করেছেন।
অ্যারন ওয়াগনার

1
আপডেট উত্তর :)
স্টিফেন হ্যারিস

Switch_theme আর কাজ করবে বলে মনে হচ্ছে না। আমি মনে করি এটি 3.4 অ্যাক্টিভেশন পরিবর্তনের কারণে হয়েছে। কমপক্ষে এটি আমার পক্ষে কাজ করছে না।
জেক

after_switch_theme নিখুঁত কাজ করে। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আমি WP 3.5 ব্যবহার করছি
আরডি আরম

0

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

আপনার থিমের মধ্যে, প্লাগিনটি এর কার্যকারিতা ব্যবহার করার আগে সক্রিয় কিনা তা পরীক্ষা করে দেখুন। এটি ব্যবহারকারীদের আরও পছন্দ এবং নিয়ন্ত্রণের অনুমতি দেবে।

আপনি ন্যাপস্যাকের সাহায্যে অ্যাক্টিভেশন স্ক্রিপ্টটি সহজেই সেট আপ করতে পারেন ।



0

আপনার সেরা ফিক্সটি এখন switch_themeহুক ব্যবহার করা এবং উত্তীর্ণ '$ থিম' আর্গুমেন্টটি ফিল্টার করা হবে এটি দেখার জন্য যে এটি যদি বর্তমান হয় তবে ফিরে না আসে কিনা;

function nw_update_network($theme) {
   if ($theme !== 'my_theme_name') return;

   // Your code here
}

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