আমি নিজের উত্তর দিচ্ছি কারণ আজ আমি নিজের পোস্ট করা 2 টি প্রশ্ন জিজ্ঞাসা করেছি এবং উত্তর খুঁজতে কিছুটা সময় ব্যয় করেছি। আমি যখন কোনও সমাধান খুঁজে পেয়েছি, তখন আমি এটি ভাগ করে নিতে চাই, তবে অন্য কোনও সমাধান হিগল করে ধরা পড়েছে এবং আমি আমার চেয়ে ভাল যে কোনও সমাধান পেয়েছি তা গ্রহণ করতে প্রস্তুত। আমার সমাধানে সম্পাদনা এবং উন্নতিগুলি যেমন প্রশংসিত হয় তেমন নয় উত্সাহিত হয়।
সম্পাদন করা
রাস্ট উত্তরের পরে আমি কোডটি সম্পাদনা করেছি। এখন ফাংশন ব্যবহার মান dashicons ক্লাস, কিন্তু এছাড়াও একটি পুরানো শৈলী ছবির URL নির্দিষ্ট করার অনুমোদন দেবে menu_icon
যুক্তি এবং একটি ব্র্যান্ড নতুন dashicons বর্গ menu_dashicon
যুক্তি।
কর্মধারা
প্রথম ভাবি যে আমি ভেবেছিলাম যে এটি register_post_type
একটি ক্রিয়াকলাপ registered_post_type
চালিয়েছিল, যেগুলি হুকিং ফাংশনগুলিতে পাস করে আর্গুমেন্টগুলিকে register_post_type
ফিল্টার না করেই পাস করে, সুতরাং সেই ফাংশনে কাস্টম আর্গুমেন্ট তৈরি করা সম্ভব to
সুতরাং আমি 'menu_dashicon'
একটি কাস্টম ড্যাশিকন পাস করার জন্য তর্কটি পাস করার সিদ্ধান্ত নিয়েছি।
এর পরে আমি একটি ক্লাস তৈরি করতে ভেবেছিলাম যা সেই যুক্তিটি শোনায়, ক্লাস ভেরিয়েবলের আইকন সংরক্ষণ করে। একই বর্গ দায়বদ্ধ হতে পারে
- ডাব্লুপি এর কারেন্ট সংস্করণ পরীক্ষা করুন, এবং যদি এটি কম হয় তবে 3.8 কিছুই করবেন না
- যদি সংস্করণটি 3.8+
$menu
হয় তবে সঠিক হুকটিতে অ্যারে লুপ করুন এবং:
- অপসারণ, উপস্থিত থাকলে, কোনও কাস্টম চিত্র
'menu_icon'
এবং এর মাধ্যমে যুক্ত করা হবে
'menu_dashicon'
পরমের মাধ্যমে কী যুক্ত করা হয়েছে তা অনুসারে ইনলাইন শৈলী যুক্ত করুন
আমি কোডটি একটি একক ফাইলে তৈরি করি, এইভাবে এটি যে কোনও থিম / প্লাগইনে সহজেই অন্তর্ভুক্ত করা যেতে পারে বা এমনকি এমইউ প্লাগইন হিসাবে ব্যবহৃত হতে পারে এবং তার পরে 'menu_dashicon'
প্রতিটি ইনস্টল করা প্রতিটি থিম এবং / অথবা প্লাগইনে ব্র্যান্ডের নতুন যুক্তিটি ব্যবহার করতে পারে ।
আমি একটি ন্যূনতম প্লাগইন শিরোনামও যুক্ত করেছি যা এটিকে স্ট্যান্ড্যালোন প্লাগইন হিসাবে ব্যবহার করতে দেয় তবে সম্ভবত এটি ব্যবহারের কম উপায়।
কিভাবে ব্যবহার করে
ভিতরে register_post_type
কেবল 'menu_dashicon'
দশিকন শ্রেণীর মান দিয়ে আর্গুমেন্টটি পাস করুন ( 'ড্যাশিকনস-উপসর্গ ছাড়াই ):
$args = array(
...
'menu_dashicon' => 'chart-pie', // dashicons will be used in WP 3.8+
'menu_icon' => $url_of_the_icon // icon images will be used in WP 3.7.1 & previous
);
register_post_type('my_cpt', $args);
এখানেই শেষ. এর সাইট থেকে ড্যাশিকনস আইকন শ্রেণীর নাম পান ।
সুতরাং এখানে কোড:
<?php
/**
* Plugin Name: GM CPT Icon
*/
namespace GM;
class CptIcon {
public static $cpt;
public $css;
static function registerIcon( $cpt, $icon ) {
self::$cpt[$cpt] = $icon;
}
function init() {
if ( $this->mp6() ) {
\add_action('admin_menu', array($this, 'parseMenu') );
}
}
function mp6() {
return \version_compare( $GLOBALS['wp_version'], '3.8', '>=' );
}
function parseMenu() {
if ( $this->mp6() && ! empty( self::$cpt ) ) {
foreach ( $GLOBALS['menu'] as $i => $item ) {
if $item[1] === 'edit_posts' && (strpos($item[2], 'edit.php?post_type=') === 0)) {
$this->menuItemClass($i, str_replace('edit.php?post_type=', '', $item[2]));
}
}
}
}
function menuItemClass( $i, $type ) {
if ( \in_array($type, \array_keys(self::$cpt), TRUE ) ) {
$GLOBALS['menu'][$i][4] = str_replace('menu-icon-post', '', $GLOBALS['menu'][$i][4]);
$GLOBALS['menu'][$i][6] = 'dashicons-' . self::$cpt[$type];
}
}
}
\add_action('plugins_loaded', function() {
if ( \is_admin() && !( \defined('DOING_AJAX') && \DOING_AJAX ) ) {
$cpticon = new CptIcon;
$cpticon->init();
}
});
\add_action('registered_post_type', function( $post_type, $args ) {
if ( isset($args->menu_dashicon) && ! empty($args->menu_dashicon) ) {
CptIcon::registerIcon($post_type, $args->menu_dashicon);
}
}, 10, 2);
এটি গিস্ট হিসাবেও উপলব্ধ
দুটি সিপিটি: ড্যাশিকনস ব্যবহার করে "আইডিয়া" এবং "গ্যালারী"। বিভিন্ন অ্যাডমিন রঙের স্কিম সহ অটো রঙ পরিবর্তন নোট করুন।
menu_icon
পূর্ববর্তী সংস্করণগুলির জন্য চিত্র ইউআরএল ব্যবহার করতে পারবেন না ... তবে কে অতীত কে যত্ন করে? :)