অ্যাডমিন মেনুতে একটি সালিসী লিঙ্ক যুক্ত করা হচ্ছে?


20

ওয়ার্ডপ্রেস অ্যাডমিন মেনুতে একটি সালিশী হাইপারলিঙ্ক যুক্ত করার কোনও উপায় আছে (আপনি যখন অ্যাডমিন ড্যাশবোর্ডে লগইন করবেন তখন বাম দিকের মেনুটি বোঝায়)? উদাহরণস্বরূপ, কেউ কি গুগলে লিঙ্ক যুক্ত করতে পারে?

আমার বিশেষ ক্ষেত্রে, আমি যে ওয়ার্ডপ্রেস থিমটিতে কাজ করছি তার জন্য একটি স্টাইলগাইড পৃষ্ঠা যুক্ত করতে চাই যাতে আমি ব্যবহারকারীকে বিভিন্ন থিমের সাথে কীভাবে বিভিন্ন HTML উপাদান রচনা করা যায় এবং বিভিন্ন জিনিসকে কীভাবে সুন্দরভাবে স্টাইল করা যায় তা প্রদর্শন করতে পারি।

এই কোড আমি এতদূর আছে ( দ্রষ্টব্য: এটি অসম্পূর্ণ ): ইন থিমের functions.php আমি একটি নতুন মেনু আইটেম যোগ করেছেন চেহারা অধ্যায়:

add_action('admin_menu', 'create_theme_style_page');

function create_theme_style_page() {
  add_theme_page('Theme Styleguide', 'Theme Styleguide', 'administrator', basename(__FILE__),'build_styleguide_page');
}

function build_styleguide_page() {
 echo "Not sure what goes here to redirect admin to a arbitrary url?";
}

ইন build_styleguide_page(), এর সাথে পুনঃনির্দেশের চেষ্টা করা header()একটি ত্রুটি দেয় ( শিরোনামের তথ্য পরিবর্তন করতে পারে না )।

উত্তর:


13

হাই @ টম ,

আমি যদি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনাকে মেনুতে কীভাবে কোনও লিঙ্ক যুক্ত করবেন তা জানার এত প্রয়োজন নেই (মনে হয় আপনি এটি ইতিমধ্যে জানেন) তবে পরিবর্তে আপনার লিঙ্কটি কীভাবে সঠিকভাবে পুনঃনির্দেশিত করা যায় তা শিখতে হবে, তাই না?

এডমিন মেনু আইটেম থেকে বাহ্যিক URL এ পুনঃনির্দেশ

যদি তাই হয় তবে আপনাকে যা করতে হবে তা হ'ল মেনু আইটেমের ফাংশনটি ব্যবহার না করে বরং তার পরিবর্তে "হুক" ওয়ার্ডপ্রেসটি এত তাড়াতাড়ি করুন যে এটি সম্ভবত এইচটিটিপি শিরোনাম ব্যতীত অন্য কোনও আউটপুট দেয় না। কল /wp-admin/themes.phpকরার সময় প্রথম দিকের হুক উপস্থিত হয় after_setup_themeএবং এটি ভালভাবে কাজ করে বলে মনে হয়।

একটি "মেনু স্লাগ" ব্যবহার করুন যাতে আপনি এটির জন্য একটি হুক পরীক্ষা করতে পারেন

কিন্তু এটা আমরা আপনার কল সংশোধন করার প্রথম প্রয়োজন কাজ পেতে add_theme_pageমধ্যে admin_menuহুক / আপনার create_theme_style_page()ফাংশন। আমরা পঞ্চম প্যারামিটারটি (অ্যাডমিন বিকল্পটি প্রয়োগ করার জন্য কল করার জন্য ফাংশন) ফেলেছি কারণ আমাদের এটির প্রয়োজন নেই, এবং চতুর্থ প্যারামিটারটি ( "মেনু স্লাগ" ) হিসাবে পরিবর্তন করা হয়েছে themes.php?goto=build-styleguide-page

যদিও আমরা চতুর্থ প্যারামিটারের জন্য প্রায় আক্ষরিক কিছু বেছে নিতে পারতাম, তবে আমরা themes.phpধারাবাহিকতার জন্য অন্যান্য উপস্থিতি বিকল্প হিসাবে একই পৃষ্ঠাতে ( ) পুনরায় নির্দেশ করতে যাচ্ছি given আমি কেবল ইচ্ছামতই নামটি নিয়ে এসেছি gotoকারণ ওয়ার্ডপ্রেস এটি ব্যবহার করে না এবং এটি এর জন্য বোধ হয়।

add_action('admin_menu', 'create_theme_style_page');
function create_theme_style_page() {
  add_theme_page(
    'Theme Styleguide',
    'Theme Styleguide',
    'administrator',
    'themes.php?goto=build-styleguide-page'
  );
}

বিটিডাব্লু, আমরা আপনার build_styleguide_page()ফাংশন থেকে মুক্তি পেয়েছি কারণ এই সমাধানের জন্য আমাদের এটির দরকার নেই।

এর জন্য প্রথম দিকের হুকটিতে পুনঃনির্দেশ করুন themes.php:after_setup_theme

কোডের শেষ বিট হিসাবে আমরা after_setup_themeআমাদের redirect_from_admin_menu()ফাংশনে আমাদের হুক প্রয়োগ করি । বর্তমান পৃষ্ঠাটি কিনা তা দেখার জন্য themes.phpএবং ইউআরএলটিতে একটি ইউআরএল প্যারামিটার gotoপাস হয়েছে তা নিশ্চিত করার জন্য আমাদের এটি পরীক্ষা আছে test তারপরে এটি / স্টেটমেন্ট gotoব্যবহারের মান পরীক্ষা করে এটির মান আছে কিনা তা পরীক্ষা করে ; যদি তাই হয় তবে এটি আপনার বর্ণিত অনুমানক যেমন গুগলে পুনঃনির্দেশ করে অন্যথায় আমরা কেবল অ্যাডমিন ড্যাশবোর্ডে পুনঃনির্দেশ:switchcase'build-styleguide-page'

add_action('after_setup_theme', 'redirect_from_admin_menu');
function redirect_from_admin_menu($value) {
  global $pagenow;
  if ($pagenow=='themes.php' && !empty($_GET['goto'])) {
    switch ($_GET['goto']) {
      case 'build-styleguide-page':
        wp_redirect("http://www.google.com");
        break;
      default:
        wp_safe_redirect('/wp-admin/');
        break;
    }
    exit;
  }
}

মন্তব্য:

  1. আমি হুক / ফাংশনে switch/ caseবিবৃতিটি ব্যবহার করতে পছন্দ করেছি যাতে আপনার প্রয়োজন হলে অতিরিক্ত পুনর্নির্দেশগুলি যুক্ত করা আরও সহজ হবে ; শুধু আরও কেস স্টেটমেন্ট যুক্ত করুন।after_setup_themeredirect_from_admin_menu()goto

  2. The wp_redirect()এবং wp_safe_redirect()ফাংশন আসলে বিনষ্ট করবেন না; আপনার পুনর্নির্দেশকে থামিয়ে দেওয়া এবং ওভাররাইড না করে ওয়ার্ডপ্রেস পেতে আপনার স্পষ্টতই একটি প্রস্থান বিবরণী ইস্যু করা দরকার।

আশাকরি এটা সাহায্য করবে!


22

আপনি যদি আপনার আইটেমটি মেনুতে $submenuঅ্যারেতে যুক্ত করে সরাসরি যুক্ত করেন তবে আপনাকে পুনর্নির্দেশ করার প্রয়োজন এড়াতে হবে এবং মেনু লিঙ্ক হিসাবে একটি সম্পূর্ণ অফসাইট URL ব্যবহার করতে সক্ষম হবেন (আমি নিজেই এটি করি) myself

add_action( 'admin_menu' , 'admin_menu_new_items' );
function admin_menu_new_items() {
    global $submenu;
    $submenu['index.php'][500] = array( 'Menu item name', 'manage_options' , 'http://example.com' ); 
}  

index.phpপ্যারেন্ট মেনুর কী / লিঙ্কটি উপস্থাপন করে, সুতরাং উদাহরণে আমি মূলত ড্যাশবোর্ড মেনুতে একটি আইটেম যুক্ত করছি ..

অবশ্যই, এটি add_{type}_pageফাংশনগুলি ব্যবহার করার মতো সুন্দর নয় , তবে এটি ওয়ার্ডপ্রেস অ্যাডমিন মেনু লিঙ্কগুলিতে অফ-সাইট ইউআরএলগুলি প্রতিরোধ করে এমনটি করে ...

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

দ্রষ্টব্য: আপনি যদি কোডটি ব্যবহার করার সিদ্ধান্ত নেন, কেবলমাত্র ব্যবহারযোগ্য কোনও কী (উদাহরণ কোডে 500 টি অ্যারে কী) অর্পণ না করার বিষয়ে সতর্ক হন।

টিপ: আপনি মেনু কীগুলিতে আসলে নেতিবাচক মানগুলি ব্যবহার করতে পারেন, যাতে আপনি মেনু আইটেমগুলিকে কোনও দেশীয় ওয়ার্ডপ্রেস আইটেমের আগে বসতে বাধ্য করতে পারেন।


দ্রষ্টব্য: আমি মনে করি আপনাকে সেই নেতিবাচক কীটি যদিও স্ট্রিং হিসাবে সেট করতে হবে। '-5'এবং না -5, অন্যথায় কীটি অবৈধ হিসাবে বিবেচিত হবে (আমার মনে হয়) .. (নেতিবাচক স্ট্রিংগুলি কাজ করে, যদি আমি ভুল না করি) ..
t31os

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

2
এই নির্দিষ্ট উত্তরটি আমাকে আমার প্লাগইন পোস্ট স্থিতি মেনু আইটেমগুলির সাথে সহায়তা করেছে (আপনি সম্ভবত অনুমান করতে পারেন এটি কী করে)। যাইহোক, আমি জানি না যে অন্যান্য প্লাগইনগুলি কী মেনুগুলিতে স্টাফ যুক্ত করবে, আমি ভেবেছিলাম যে আমি array_push()অন্য কোনও প্লাগইনগুলির সাথে সংঘর্ষ এড়াতে মেনু আইটেমগুলি সংযোজন করতাম ।
mrwweb

যেমন একটি ছোট স্নিপেট ব্যবহার করার জন্য একটি মোহন, প্লাস বোনাস পয়েন্টের মতো কাজ করে।
জোও

2
+1 টি। কোনও কী বাছাই করা এবং আশা করার পরিবর্তে, কেবলমাত্র শেষ কী এবং বর্ধিতকরণটি ধরুন। উদাহরণস্বরূপ, যখন সরঞ্জামসমূহ মেনুতে একটি সাবমেনু আইটেমটি যোগ: global $submenu; $key = end(array_keys($submenu['tools.php'])) + 1; $submenu['tools.php'][$key++] = ইত্যাদি
webaware

3

আমি এর সাথে একই অর্জন করেছি:

function add_custom_menu_item(){
    add_menu_page( 'Menu Item Title', 'Page Title', 'manage_options', 'page_slug', 'function', 'dashicons-icon', 1 );
}
add_action( 'admin_menu', 'add_custom_menu_item' );

function custom_menu_item_redirect() {

    $menu_redirect = isset($_GET['page']) ? $_GET['page'] : false;

    if($menu_redirect == 'page_slug' ) {
        wp_safe_redirect( home_url('/my-page') );
        exit();
    }

}
add_action( 'admin_init', 'custom_menu_item_redirect', 1 );

আপনি এখানে যা করেন তা হ'ল আপনি মেনু আইটেম যুক্ত করেন এবং স্লাগ সংজ্ঞায়িত করেন, তারপরে 'অ্যাডমিন_ইনিট' এ আপনি স্লাগ উপস্থিত রয়েছে কিনা তা পরীক্ষা করে আপনার পছন্দসই জায়গায় পুনর্নির্দেশ করতে পারেন।

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