অ্যাডমিন মেনু লেবেল পরিবর্তন করা হচ্ছে


44

আমি আমার ক্লায়েন্ট সাইটের জন্য ওয়ার্ডপ্রেস সম্পূর্ণরূপে কাস্টমাইজ করতে ফাংশন.এফপি ফাইল ব্যবহার করে শেষ দিনটি কাটিয়েছি। আমি কতটা অর্জন করতে পেরেছি এবং আমার ক্লায়েন্টদের পক্ষে এটি কতটা সহজ করে তুলবে তা দেখে আমি অবাক হয়েছি।

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

যদি কেউ ফাংশন.এফপি ফাইলের জন্য কোড সরবরাহ করতে পারে বা আমাকে দিক নির্দেশ করতে পারে তবে আমি এটির প্রশংসা করব!


হতে পারে আপনার এটিকে দুটি আলাদা প্রশ্নে বিভক্ত করা উচিত: "অ্যাডমিন মেনু আইটেমগুলির নামকরণ" এবং "অ্যাডমিন মেনু আইটেমগুলির ক্রম পরিবর্তন করা" ? এটি আপনাকে আপনার প্রশ্নের জন্য আরও দর্শন পেতে সহায়তা করবে।
জান ফ্যাব্রি

উত্তর:


66

লেবেলগুলি পরিবর্তন করার প্রক্রিয়াটি এখানে রয়েছে (আমি পোস্টগুলিকে আমার পরিচিতিতে "পরিচিতিগুলিতে" পরিবর্তন করেছি)

function change_post_menu_label() {
    global $menu;
    global $submenu;
    $menu[5][0] = 'Contacts';
    $submenu['edit.php'][5][0] = 'Contacts';
    $submenu['edit.php'][10][0] = 'Add Contacts';
    $submenu['edit.php'][15][0] = 'Status'; // Change name for categories
    $submenu['edit.php'][16][0] = 'Labels'; // Change name for tags
    echo '';
}

function change_post_object_label() {
        global $wp_post_types;
        $labels = &$wp_post_types['post']->labels;
        $labels->name = 'Contacts';
        $labels->singular_name = 'Contact';
        $labels->add_new = 'Add Contact';
        $labels->add_new_item = 'Add Contact';
        $labels->edit_item = 'Edit Contacts';
        $labels->new_item = 'Contact';
        $labels->view_item = 'View Contact';
        $labels->search_items = 'Search Contacts';
        $labels->not_found = 'No Contacts found';
        $labels->not_found_in_trash = 'No Contacts found in Trash';
    }
    add_action( 'init', 'change_post_object_label' );
    add_action( 'admin_menu', 'change_post_menu_label' );

মেনু ক্রম পরিবর্তন করতে, এটি সঙ্গে যান:

// CUSTOMIZE ADMIN MENU ORDER
   function custom_menu_order($menu_ord) {
       if (!$menu_ord) return true;
       return array(
        'index.php', // this represents the dashboard link
        'edit.php', //the posts tab
        'upload.php', // the media manager
        'edit.php?post_type=page', //the posts tab
    );
   }
   add_filter('custom_menu_order', 'custom_menu_order');
   add_filter('menu_order', 'custom_menu_order');

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


এটি দুর্দান্ত ধন্যবাদ! এখন আমার কেবল একটি সাব মেনু আইটেমটি (উদাহরণস্বরূপ মেনু) একটি প্রধান মেনু বোতাম হিসাবে স্থানান্তরিত করার উপায় খুঁজে নেওয়া দরকার। কোন ধারণা?
আদম

পরীক্ষিত হয়নি, তবে অ্যারেতে 'নাভ-মেনু.পিএফপি' যুক্ত করা এটি দেখুন কিনা।
নরক্রস

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

@ নরক্রস এটি দুর্দান্ত, তবে অনুবাদের জন্য এটি টেক্সট-ডোমেনকে অন্তর্ভুক্ত করতে পারে তাই এটি কি এমনটি মানিয়ে নেওয়া সম্ভব?
ফিল হিলি

@ ফিলিহলে এই ফাংশনে লেবেলিংয়ের জন্য কোনও তথ্য নেই, বরং কেবল অর্ডার করুন।
নরক্রস

8

ডিফল্ট পোস্টের নাম পরিবর্তন করতে (বা সেই বিষয়ে অন্য কোনও) কেবল ফিল্টার ব্যবহার করুন post_type_labels_{$post_type}। ডিফল্ট জন্য postএটি হবে post_type_labels_post। নীচের কোডটিতে লেবেলের পুরো তালিকা রয়েছে ( WP 4.7.1)। আপনাকে সব কিছু বদলাতে হবে না।

add_filter( 'post_type_labels_post', 'news_rename_labels' );

/**
* Rename default post type to news
*
* @param object $labels
* @hooked post_type_labels_post
* @return object $labels
*/
function news_rename_labels( $labels )
{
    # Labels
    $labels->name = 'News';
    $labels->singular_name = 'News';
    $labels->add_new = 'Add News';
    $labels->add_new_item = 'Add News';
    $labels->edit_item = 'Edit News';
    $labels->new_item = 'New News';
    $labels->view_item = 'View News';
    $labels->view_items = 'View News';
    $labels->search_items = 'Search News';
    $labels->not_found = 'No news found.';
    $labels->not_found_in_trash = 'No news found in Trash.';
    $labels->parent_item_colon = 'Parent news'; // Not for "post"
    $labels->archives = 'News Archives';
    $labels->attributes = 'News Attributes';
    $labels->insert_into_item = 'Insert into news';
    $labels->uploaded_to_this_item = 'Uploaded to this news';
    $labels->featured_image = 'Featured Image';
    $labels->set_featured_image = 'Set featured image';
    $labels->remove_featured_image = 'Remove featured image';
    $labels->use_featured_image = 'Use as featured image';
    $labels->filter_items_list = 'Filter news list';
    $labels->items_list_navigation = 'News list navigation';
    $labels->items_list = 'News list';

    # Menu
    $labels->menu_name = 'News';
    $labels->all_items = 'All News';
    $labels->name_admin_bar = 'News';

    return $labels;
}

আপনি যদি আন্তর্জাতিকীকরণের সহায়তা চান তবে কেবল এই জাতীয় ব্যবহার করুন __( $text, $textdomain ):

$labels->name = __( 'News', 'textdomain' );

আমি ফিল্টারটি ফাংশনটিতে পেয়েছি: get_post_type_labels()একটি ফাইল থেকে wp-includes/post.php:

/**
 * Filter the labels of a specific post type.
 *
 * The dynamic portion of the hook name, `$post_type`, refers to
 * the post type slug.
 *
 * @since 3.5.0
 *
 * @see get_post_type_labels() for the full list of labels.
 *
 * @param object $labels Object with labels for the post type as member variables.
 */
$labels = apply_filters( "post_type_labels_{$post_type}", $labels );

2
লেখার সময় নরক্রসের উত্তর সম্ভবত সবচেয়ে ভাল হতে পারে, তবে এটি একটি অনেক পরিষ্কার পরিচ্ছন্ন পন্থা যা একই ফলাফল অর্জনের জন্য দেশীয় ফিল্টার ব্যবহার করে।
রায়ান

2
মূলটি লেখার পরে, আমি এই ফিল্টারটি আরও ভাল agree
নরক্রস

3

আপনি এই প্রশ্নটি দেখতে চাইবেন

এবং ক্লাস তারা সেখানে উল্লেখ সারকথা

যা আপনার জন্য খুঁজছেন এমন ফাংশন ধারণ করে

rename_admin_menu_section()

উদাহরণস্বরূপ নাম পরিবর্তন করতে নিবন্ধগুলিতে পোস্ট পরিবর্তন করুন

এবং আপনি উপস্থিতি মেনু সরাতে এবং এর জন্য আপনাকে নতুন শীর্ষ পৃষ্ঠার মেনু আইটেম তৈরি করতে পারেন


3

আমি সম্মতি জানাই .. functions.phpফাইলটি প্রচুর নমনীয়তা দেয়। functions.phpফিল্টার এবং এই প্লাগইন এর সংমিশ্রণে আপনি বর্ণিত একই কার্যকারিতাটির কিছু দরকার পড়েছিল

আমি যা বলতে পারি তা থেকে..এই প্লাগইনটি আপনার উভয় সমস্যার সমাধান করবে এবং এটি মাল্টি-সাইট ইনস্টল পরিস্থিতিতেও ভাল কাজ করে। আশা করি এইটি কাজ করবে.


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

কোনও সমস্যা নেই রস, আমি যাইহোক এটি এটি দেখতে যাচ্ছি। ধন্যবাদ
আদম

0

উপরের নোকক্রসের উদাহরণ ঠিক আছে, তবে আমার আন্তর্জাতিকীকরণের সম্ভাবনা দরকার ছিল। আমার সুনাম যদি থাকে তবে এটি নরক্রসের জবাব অনুসারে একটি মন্তব্য হবে, তবে যেহেতু আমি তা করি না, আমি কেবলমাত্র পরিবর্তিত কোডটি এখানে রাখব। 'i18n_context' অনুবাদ প্রসঙ্গে একটি স্বেচ্ছাসেবী নেমস্পেস, এটি উদাহরণস্বরূপ আপনার প্লাগইন বা থিমের নাম হতে পারে।

function change_post_menu_label() {
  global $menu;
  global $submenu;
  $menu[5][0] = __('Contacts', 'i18n_context');
  $submenu['edit.php'][5][0] = __('Contacts', 'i18n_context');
  $submenu['edit.php'][10][0] = __('Add Contacts', 'i18n_context');
  $submenu['edit.php'][15][0] = __('Status', 'i18n_context'); // Change name for categories
  $submenu['edit.php'][16][0] = __('Labels', 'i18n_context'); // Change name for tags
  echo '';
}

function change_post_object_label() {
  global $wp_post_types;
  $labels = &$wp_post_types['post']->labels;
  $labels->name = __('Contacts', 'i18n_context');
  $labels->singular_name = __('Contact', 'i18n_context');
  $labels->add_new = __('Add Contact', 'i18n_context');
  $labels->add_new_item = __('Add Contact', 'i18n_context');
  $labels->edit_item = __('Edit Contacts', 'i18n_context');
  $labels->new_item = __('Contact', 'i18n_context');
  $labels->view_item = __('View Contact', 'i18n_context');
  $labels->search_items = __('Search Contacts', 'i18n_context');
  $labels->not_found = __('No Contacts found', 'i18n_context');
  $labels->not_found_in_trash = __('No Contacts found in Trash', 'i18n_context');
}
add_action( 'init', 'change_post_object_label' );
add_action( 'admin_menu', 'change_post_menu_label' );

আপনি অন্য উত্তরে সম্পাদনার পরামর্শ কেন দেননি?
ফুসিয়া

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