অ্যাডমিন মেনুতে পৃথককারী যুক্ত করবেন?


22

কেউ কি অ্যাডমিন মেনু বিভাজক যুক্ত করতে জানেন? আমি দেখেছি এই কিন্তু এটি সাহায্য করেনি।

কোন ধারনা?


যদি এখনও কেউ এর উত্তরের সন্ধান করে তবে এই প্লাগইনটি কাজটি পরিচালনা করতে পারে।
ব্যবহারকারী31760

উত্তর:


33

আপনি যা চান তা পাওয়ার জন্য এখানে দ্রুত এবং নোংরা উপায়।

পটভূমি

ওয়ার্ডপ্রেস বলে বিশ্বব্যাপী অ্যারেতে অ্যাডমিন মেনু বিভাগগুলি $menu। একটি বিভাজক যুক্ত $menuকরতে আপনি আলাদা করতে চান এমন বিকল্পগুলির সূচীগুলির মধ্যে থাকা একটি সূচি ব্যবহার করে অ্যারেতে একটি উপাদান যুক্ত করুন।

add_admin_menu_separator()ফাংশন ব্যবহার করে

সুতরাং আমি এই জন্য কল যুক্তি encapsulate একটি ফাংশন লিখেছি add_admin_menu_separator()। আপনাকে একটি অ্যারের সূচক নম্বর বাছাই করতে হবে যা বিকল্পের পরে আপনি একটি বিভাজক যুক্ত করতে চান, এবং তারপরে ক্রিয়াকলাপটি add_admin_menu_separator()বলা সূচকটিকে আপনার প্যারামিটার হিসাবে কল করুন ।

উদাহরণ স্বরূপ:

add_admin_menu_separator(37);

add_admin_menu_separator()ফাংশন নিজেই

ফাংশনের সংজ্ঞাটি এখানে দেওয়া হয়েছে add_admin_menu_separator()যা আপনি আপনার থিমের functions.phpফাইলটিতে অনুলিপি করতে পারেন । হ্যাঁ এটি আরকেন তবে তারপরে কোডটি যা বিশ্বব্যাপী $menuঅ্যারে তৈরি করে এবং ব্যবহার করে । (পরিকল্পনাগুলি অবশেষে এটিকে অবমূল্যায়ন করবে, ধন্যবাদ, তবে সম্ভবত এটি কয়েক বছর হবে))

function add_admin_menu_separator($position) {
  global $menu;
  $index = 0;
  foreach($menu as $offset => $section) {
    if (substr($section[2],0,9)=='separator')
      $index++;
    if ($offset>=$position) {
      $menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
      break;
    }
  }
  ksort( $menu );
}

$menuআপনার প্রয়োজনীয় সূচকটি সন্ধান করা

জিনিসটা আপনি একটি কি করতে পারেন হবে তা সূচক সংখ্যা var_dump()এর $GLOBALS['menu']একটি মধ্য থেকে admin_initহুক। functions.phpমানগুলির কি তা দেখতে আপনি সাময়িকভাবে আপনার থিমের ফাইলটিতে ফেলে দিতে পারেন এই কোডটির একটি বিট । এটি কেবল তখনই URL এর সাথে অনুরোধ করার সময় কাজ করবে /wp-admin/ (তবে এফটিপি সহ এটি করার বিষয়ে নিশ্চিত হন এবং থিম সম্পাদক হিসাবে অন্তর্নির্মিত নয় বা আপনার থিমের functions.phpফাইলে এফটিপি অ্যাক্সেস না পাওয়া পর্যন্ত আপনি আপনার সাইটে অ্যাক্সেস ছেড়ে দেবেন !) :

add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
  if (is_admin()) {
    header('Content-Type:text/plain');
    var_dump($GLOBALS['menu']);
    exit;
  }
}

আরো দেখুন:

বিটিডাব্লু, আপনি অ্যাডমিন মেনুগুলির সাথে কাজ করার জন্য এই লিঙ্কগুলি সাধারণভাবে দরকারী দেখতে পাবেন:

যদিও আমার অ্যাডমিন মেনু ক্লাসগুলি বর্তমানে বিভাজনকারীদের যুক্ত করার কোনও সহজ উপায় সরবরাহ করে না বলে আমার মনে হয় আমি সময় পেলেই এটি যুক্ত করব।


ধন্যবাদ মাইক, আমি সারা রাত ধরে বৈশ্বিক ভেন্যু মেনু অধ্যয়ন করে দেখেছি, তবে আমি কোনও বিভাজক যুক্ত করতে পারি নি, ডাব্লুপিপিতে মেনুগুলি কীভাবে কাজ করে তা এখন আমার কাছে আরও স্পষ্ট।
ব্যবহারকারী 1147

হাই @ ইউজার 1147 : হ্যাঁ, তারা খুঁজে পাওয়া খুব শক্ত। আমি যখন প্রথমবারে এসেছি তখন আমাকে বেশ সময় নিয়েছিল এবং আমি এখনও তাদের সাথে লড়াই করছি। তাই আমি কেন এই ফাংশনগুলি লিখেছি, তাই এখন থেকে এটি সহজ উপায়ে করতে পারি! যাইহোক, খুশী আমার উত্তর সাহায্য করেছে।
মাইকচিন্কেল

1
@ মাইকস্কিঙ্কেল এই পদ্ধতিটি ওয়ার্ডপ্রেস ৩.৩.১ নিয়ে আমার পক্ষে কাজ করছে না।
জিম জের্তস

1
@ জিমজেটস - এটি আমার পক্ষেও কাজ করছে না: /
ইভান ম্যাটসন

2
আমি এটি মাত্র পরীক্ষা করেছি এবং এটি 4.5 এ "কাজ করে", তবে ওয়ার্ডপ্রেস সিদ্ধান্ত নিয়েছে যে তারা কেবল আর প্রদর্শিত হবে না lines আমি মনে করি সিএসএস যুক্ত করা যায় তবে আমার জীবনের জন্য আমি সিএসএস কী যুক্ত করব তা আমি বুঝতে পারি না যেহেতু আমি ব্যাকএন্ড ডেভ এবং সিএসএসে চুষছি। অন্য কেউ পরামর্শ দিতে পারে?
মাইকচিন্কেল

4

এটি এত সহজ:

add_action( 'admin_init', 'add_sep' );
function add_sep() {

    if ( ! is_admin() )
        return false;

    global $menu;
    $sep = $menu[4]; // that's the default separator
    $pos = 6; // change it for the desired position
    $menu = array_merge(
        array_slice( $menu, 0, $pos ),
        array( $sep ),
        array_slice( $menu, $pos + 1, -1)
    );
    $menu[ $pos - 1 ][4] .= ' menu-top-last';
    $menu[ $pos + 1 ][4] .= ' menu-top-first';

}

দ্রষ্টব্য: $menu[4]এই হুকের আগে আপনি (বা আপনার প্লাগইনগুলি) কোন কনফিগারেশন করেছেন তার উপর নির্ভর করে ডিফল্ট বিভাজক অবস্থান ( ) আলাদা হতে পারে।

অবশ্যই, আপনি menu-top-firstএবং menu-top-lastক্লাসের অন্তর্নিবেশকেও টুইট করতে পারেন ।


2

বিভাজকদের যুক্ত না করা নিয়ে কিছু সমস্যা ছিল, এটি ওয়ার্ডপ্রেসের ডুপ্লিকেট বিভাজকগুলি সরানোর উপায়ের কারণেই হয়েছিল। ksort($menu);ফাংশনের নীচে যুক্ত করা বিষয়টিকে সংশোধন করেছে।


1

এটি মাস্তাবাবার উত্তরের উপর ভিত্তি করে, তবে আপনি যে অবস্থানটি নির্দিষ্ট করেছেন তাতে কোনও কিছুই প্রতিস্থাপন করে না - এটি কেবল পরে বিভাজক যুক্ত করে।

একটি বেনামি ফাংশনও ব্যবহার করে তাই এটি কেবলমাত্র পিএইচপি সংস্করণ 5.3 এবং তার উপরের সাথে উপযুক্ত।

add_action( 'admin_menu', function () {
    $position = 29;
    global $menu;
    $separator = [
        0 => '',
        1 => 'read',
        2 => 'separator' . $position,
        3 => '',
        4 => 'wp-menu-separator'
    ];
    if (isset($menu[$position])) {
        $menu = array_splice($menu, $position, 0, $separator);
    } else {
        $menu[$position] = $separator;
    }
});

0

আপনি যা করার চেষ্টা করছেন তা নির্ধারণ করা কিছুটা কঠিন, তবে আমি মনে করি আপনি ওয়ার্ডপ্রেস অ্যাডমিন মেনুতে একটি শীর্ষ-স্তরের এন্ট্রি যুক্ত করতে চাইছেন।

ওয়ার্ডপ্রেস কোডেক্সে এই ডকুমেন্টেশনটি দেখুন ।

সংক্ষেপে, আপনি add_menu_page()ফাংশনটির ব্যবহার সন্ধান করছেন , যা বেশ কয়েকটি যুক্তি গ্রহণ করে এবং প্রশাসনিক মেনুতে "ড্যাশবোর্ড", "পোস্টস", "মিডিয়া" ইত্যাদির ভাইবোন হিসাবে একটি অতিরিক্ত আইটেম প্রদর্শন করে

আশা করি আমি ঠিক পেয়েছি। :-)


আমি কেবল অ্যাডমিন মেনু বিভাগকে যুক্ত করার চেষ্টা করছি। প্রশ্ন পোস্ট করার আগে আমি ব্যবহার করার চেষ্টা করেছি add_menu_page()
ব্যবহারকারী 1147

দেখে মনে হচ্ছে মাইকচিনকেল আপনাকে বেশ ভালভাবে কভার করেছে। ভুল বোঝার জন্য দুঃখিত। শুভকামনা!
dgw

0

নীচে অ্যাডমিন মেনুটি রেন্ডার করার পরে চালিত ওয়ার্ডপ্রেসে একটি ক্রিয়া বিজ্ঞাপন দেয়। অ্যাডমিন মেনুটি একটি অ্যারে এবং আপনি যা করছেন এখানে, আপনি যে অবস্থানটি নির্দিষ্ট করেছেন সেখানে একটি অ্যারে উপাদান যুক্ত করছে যা একটি বিভাজককে সংজ্ঞায়িত করে।

থেকে এখানে :

add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0   =>  '',
1   =>  'read',
2   =>  'separator' . $position,
3   =>  '',
4   =>  'wp-menu-separator'
);
}

নোট করুন, যদিও এটি বর্তমানে গৃহীত উত্তরের সাথে সাদৃশ্যযুক্ত, বর্তমানে গৃহীত উত্তরগুলি আমার পক্ষে কার্যকর হয়নি (এবং মন্তব্যগুলি থেকে বিচার করার জন্য, বেশ কয়েকটি অন্যান্য)।


বিদ্যমান, স্বীকৃত উত্তরের মধ্যে কোনও পার্থক্য নেই, আপনি কোনও ব্যাখ্যা না দিয়েই। কিভাবে উত্তর দিতে দয়া করে পড়ুন ।
ফুসিয়া

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