আমি সংযুক্তিতে কোনও বিভাগ মেটাবক্স যুক্ত করতে পারি?


18

আমি register_taxonomy_for_object_type()মিডিয়া আপলোডগুলিতে (সংযুক্তি) বিভাগের বিভাগের ক্ষেত্র যুক্ত করতে ব্যবহার করছি । আমি এটি করতে এই কোডটি ব্যবহার করছি:

add_action('init', 'reg_tax');
function reg_tax() {
   register_taxonomy_for_object_type('category', 'attachment');
}

এটি কোনও চিত্র দেখার সময় মিডিয়া পৃষ্ঠায় বিভাগের জন্য একটি সাধারণ পাঠ্য ক্ষেত্রটি কাজ করে এবং যুক্ত করে। আমি যা চাই তা হ'ল এটি প্রকৃত বিভাগগুলি মেটাবক্সকে প্রদর্শন করা যাতে আমি কেবল ক্ষেত্রের ক্ষেত্রে টাইপ না করে যে বিভাগগুলি আমি ব্যবহার করতে চাই তা চয়ন করতে পারি। আমি এটিও খুঁজে পেয়েছি যে এই পাঠ্য ক্ষেত্রে কোনও বিভাগের জন্য স্লাগ স্থাপন করা my-category-nameযেমন আসল বিভাগের নাম হিসাবে My Category Nameএটি সংরক্ষণের পরে শেষ হওয়া পর্যন্ত শেষ হয় , যা সাধারণ পাঠ্য ক্ষেত্রটিকে কোনও দরকারী বিকল্পের চেয়েও কম করে তোলে।

আমি add_post_type_support()মেটাবক্সগুলি যুক্ত করার জন্য ফাংশনটি দেখছি এবং এটি কাস্টম পোস্ট প্রকারের জন্য ব্যবহৃত দেখেছি, সংযুক্তিগুলির জন্য এটি একই যুক্ত করা সম্ভব কিনা আমি কেবল দেখতে পাচ্ছি না।


আপনি যদি সেরা উত্তর বাছাইয়ের আগে এক-দু'দিন অপেক্ষা করেন তবে আমি আপনাকে একটি প্লাগইন লিখব ... ( আজ রাতে রাতেই ওয়ার্ডপ্রেস উত্তরগুলি উপস্থাপনের জন্য ক্লায়েন্টের সময়সীমা এবং একটি ওয়ার্ডপ্রেস মিলিত
রূপ পেয়েছি

@ মাইক: ধন্যবাদ, আমি এই সমস্যার কী সমাধান আছে তা দেখতে আগ্রহী। দেখে মনে হচ্ছে যে আমি যা করছি সেখানে প্রায় 90% ওয়ার্ডপ্রেসে এটি দাঁড়িয়ে আছে, এটি কেবল শেষ 10% সম্পর্কে দেখা যায়!
রিক কারান

আমি একটি কাস্টম পোস্ট মেটাবক্সের সাথে খুব অনুরূপ কিছু করেছি; উদাহরণস্বরূপ একটি (বেসিক) বিভাগের তালিকা এম্বেড করা (অর্থাত্ সকল / সর্বাধিক জনপ্রিয় ট্যাবগুলি w / o)। এটি কেবল 'সংযুক্তি_ফিল্ডস_ টু_ডিট' কীভাবে এর পোস্টটি প্রয়োগ করে তার উপর নির্ভর করে। যাইহোক, আমি আজ রাতে করতে পারি না। ঘুমানো দরকার.
মাইকচিন্কেল

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

@ মাইক: আপনার সহায়তার জন্য ধন্যবাদ, আমি আমার সমাধান সম্পর্কে কিছু প্রতিক্রিয়া পছন্দ করব। আমি আনন্দিত যে আমি এটি কার্যকর করার জন্য একটি উপায় খুঁজে পেয়েছি। আসল বিভাগের মেটাবক্সের মাধ্যমে সংযুক্তিগুলিতে বিভাগ যুক্ত করার বিষয়টি দেখতে দুর্দান্ত লাগবে তবে আমার সমাধানটি যথেষ্ট ভাল কাজ করে।
রিক কারান

উত্তর:


14

সম্পাদনা করুন: 12/09/2017 এর আরও একটি আপ টু ডেট সমাধানের জন্য এই উত্তরটি দেখুন: নতুন মিডিয়া লাইব্রেরির সাথে সংযুক্তিতে কীভাবে ট্যাক্সনোমি ব্যবহার করবেন?

আমি আমার নিজের প্রশ্নের উত্তর এখানে দিতে যাচ্ছি যেহেতু আমি যা করার চেষ্টা করেছি তার একটি সমাধান বের করতে সক্ষম হয়েছি। আমি এই সিদ্ধান্তে পৌঁছেছি যে সংযুক্তিগুলির জন্য বিভাগ মেটাবক্স সক্ষম করা সম্ভব ছিল না। তবে, আমি দেখতে পেয়েছি যে সংযুক্তি পৃষ্ঠাগুলিতে যোগ করে register_taxonomy_for_object_typeএবং এর দ্বারা বিভাগগুলির জন্য একটি মৌলিক ক্ষেত্র পাওয়ার পক্ষে যথেষ্ট সহজ ছিল add_post_type_support:

add_action('admin_init', 'reg_tax');
function reg_tax() {
   register_taxonomy_for_object_type('category', 'attachment');
   add_post_type_support('attachment', 'category');
}

ক্ষেত্রটি যুক্ত হয়েছে এরকম দেখানো:

বিকল্প পাঠ

এটি কেবল একটি সরল পাঠ্য ক্ষেত্র তবে যা আমি পেয়েছি তা হ'ল আপনি সেখানে বিদ্যমান বিভাগের নামটি টাইপ করতে পারবেন এবং সংযুক্তি আপডেট হওয়ার পরে এটি সফলভাবে সংরক্ষণ করা হবে (একমাত্র অদ্ভুত আচরণটি হ'ল এটির পরিবর্তে সাধারণ সংস্করণটি রেন্ডার করা হয়েছিল) সংরক্ষণের পরে স্লাগ)।

একবার আমি বুঝতে পেরেছিলাম যে আমি এইভাবে বিভাগগুলি সংরক্ষণ করতে পারি তারপরে আমি অনুভব করেছি যে আমি চেকবক্স হিসাবে সমস্ত উপলব্ধ বিভাগগুলির তালিকা পেতে পারি এবং যা নির্বাচিত হয়েছিল তা পরীক্ষা করতে পারি। তারপরে আমি পরীক্ষিত বিভাগগুলির মানগুলি ধরতে এবং বিভাগের ক্ষেত্রে সমস্ত বিভাগের স্লাগগুলি রাখার জন্য কিছুটা jQuery ব্যবহার করেছি। এটিকে আরও নির্বিঘ্ন বলে মনে করার জন্য আমি বিভাগের ক্ষেত্রটি সারণী সারিটি লুকিয়ে রাখতে একটি সাধারণ বিট সিএসএস ব্যবহার করেছি, সুতরাং আপনি যা যা দেখেন তা সমস্তই চেকবক্সগুলি যেমন:

বিকল্প পাঠ

এখন আমি চিত্র সংযুক্তিগুলিতে বিভাগগুলি যুক্ত করতে পারছি এমন কিছু ব্যবহার করতে পারি:

get_posts('post_type=attachment&category_name=timber-fixed-windows')

এবং শ্রেণীবদ্ধ চিত্রগুলি একটি পৃষ্ঠায় টানুন! ঠিক আমি যা করার আশা করছিলাম, আমি ভাবিনি যে এটি করার একটি উপায় হতে পারে তবে আমি খুশী হয়ে আমি কিছু বের করতে পেরেছি।

আমি এটিকে একটি প্লাগইনে পরিণত করেছি WOS Media Categoriesযার নামটি আমি আমার ওয়েবসাইট, সাবুর্বিয়া.আর.ইউক থেকে ডাউনলোডের জন্য উপলব্ধ করে রেখেছি , আমি আশা করি এটি অন্য কারও কাজে লাগতে পারে! যারা আবার এই বিষয়ে মন্তব্য করেছে এবং আমি এখানে জিজ্ঞাসা করা অন্যান্য প্রশ্নগুলির জন্য আবার ধন্যবাদ, যা এটি খুঁজে পেতে সহায়তা করেছিল!

আপডেট: ফ্ল্যাশ বাল্ক আপলোডার ব্যবহার করে চিত্রগুলি আপলোড করা হয় আমি বিভাগগুলি যুক্ত করার জন্য সক্ষম করার জন্য একটি সংশোধন করেছি।


আমি ডেটা অখণ্ডতার প্রয়োজন এমন কিছু থেকে jQuery ব্যবহার করে কিছুটা বিরক্ত। আমি পুরোপুরি নিশ্চিত যে এই সমস্ত সার্ভারে করা সম্ভব। আমি শীঘ্রই এটি দেখার চেষ্টা করব।
মাইকচিনকেল

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

@ মাইক বা @ রিক - আপনি সম্ভবত এমন একটি উদাহরণ প্রদান করতে পারেন যা মিডিয়া যুক্ত হওয়ার সাথে সাথে একটি নির্দিষ্ট বিভাগে স্বয়ংক্রিয়ভাবে একটি পোস্ট বরাদ্দ করতে পারে? বিভাগ সংস্থার পোস্ট পোস্ট টাইপ করা যাবে না সে কোডের মাধ্যমে ম্যানুয়ালি সেট করবে?
নেটকন্সট্রাক্টর.কম

@ নেটকন্সট্রাক্টর.কম - আমার কাছে অন্য প্রশ্নের মতো মনে হচ্ছে ...
মাইকচিনকেল

@ নেটকনস্ট্রাক্টর.কম: হ্যাঁ, আমার কাছে আরও বড় প্রশ্নের মতো মনে হচ্ছে!
রিক কারান

4

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

function register_custom_taxonomies() {
    $labels = array(
        'name' => _x( 'Image Formats', 'taxonomy general name' ),
        'singular_name' => _x( 'Image Format', 'taxonomy singular name' ),
        'search_items' =>  __( 'Search Formats' ),
        'all_items' => __( 'All Formats' ),
        'parent_item' => __( 'Parent Format' ),
        'parent_item_colon' => __( 'Parent Format:' ),
        'edit_item' => __( 'Edit Format' ), 
        'update_item' => __( 'Update Format' ),
        'add_new_item' => __( 'Add New Format' ),
        'new_item_name' => __( 'New Format Name' ),
        'menu_name' => __( 'Image Format' )
    );
    $capabilities = array(
        'manage_terms' => 'nobody',
        'edit_terms' => 'nobody',
        'delete_terms' => 'nobody'
    );
    $args = array(
        'public' => false,
        'hierarchical' => true,
        'labels' => $labels,
        'capabilities' => $capabilities,
        'show_ui' => false,
        'query_var' => 'image-format',
        'rewrite' => false
    );
    register_taxonomy('image-format', array('attachment'), $args);
}
add_action( 'init', 'register_custom_taxonomies', 1);

function add_media_categories($fields, $post) {
    $categories = get_categories(array('taxonomy' => 'image-format', 'hide_empty' => 0));
    $post_categories = wp_get_object_terms($post->ID, 'image-format', array('fields' => 'ids'));
    $all_cats .= '<ul id="media-categories-list" style="width:500px;">'; 
    foreach ($categories as $category) {
        if (in_array($category->term_id, $post_categories)) {
            $checked = ' checked="checked"';
        } else {
            $checked = '';  
        }
        $option = '<li style="width:240px;float:left;"><input type="checkbox" value="'.$category->category_nicename.'" id="'.$post->ID.'-'.$category->category_nicename.'" name="'.$post->ID.'-'.$category->category_nicename.'"'.$checked.'> ';
        $option .= '<label for="'.$post->ID.'-'.$category->category_nicename.'">'.$category->cat_name.'</label>';
        $option .= '</li>';
        $all_cats .= $option;
    }
    $all_cats .= '</ul>';

    $categories = array('all_categories' => array (
            'label' => __('Image Formats'),
            'input' => 'html',
            'html' => $all_cats
    ));
    return array_merge($fields, $categories);
}
add_filter('attachment_fields_to_edit', 'add_media_categories', null, 2);

function add_image_attachment_fields_to_save($post, $attachment) {
    $categories = get_categories(array('taxonomy' => 'image-format', 'hide_empty' => 0));
    $terms = array();
    foreach($categories as $category) {
        if (isset($_POST[$post['ID'].'-'.$category->category_nicename])) {
            $terms[] = $_POST[$post['ID'].'-'.$category->category_nicename];        
        }
    }
    wp_set_object_terms( $post['ID'], $terms, 'image-format' );
    return $post;
}
add_filter('attachment_fields_to_save', 'add_image_attachment_fields_to_save', null , 2);

(মনে রাখবেন যে আমি একটি কাস্টম ট্যাক্সনমি ব্যবহার করছি, বিভাগগুলি নয়, তাই আপনি যদি আপনার চেকবক্সগুলি সেট আপ করার সময় ব্যবহার করেন ঠিক একই অ্যারের সাথে মেলে to বিভাগের অ্যারেটি পরিবর্তন করতে হবে)

শাবম, শাবজল। উপভোগ করুন।


আপনার add_image_attachment_fields_to_save ফাংশনটির শেষে $ পোস্টটি ফিরে আসা দরকার। wp_set_object_terms( $post['ID'], $terms, 'image-format' ); return $post;। এবং আপনার পোস্ট করা স্ক্রিপ্টটি রেজিস্টার_ কাস্টম_ট্যাক্সোনোমিজ কার্যকর করে না। তবে যাইহোক সুন্দর স্ক্রিপ্ট। ভবিষ্যতে অবশ্যই এটি ব্যবহার করবে!
রব ভার্মির

ওহ উফ, আমি সুবিধাজনক হয়ে উঠছি ভেবে এটিকে একসাথে আবদ্ধ করেছিলাম। আমি এটি এক সেকেন্ডে এখানে ঠিক করব। ফিরে আসার উত্তম বক্তব্য, যদিও এটি নিয়ে আমার কোনও সমস্যা হচ্ছিল না।
ড্রিউ গৌলি

1

আপনি যদি ওয়ার্ডপ্রেসের ডিফল্ট বিভাগের বাক্সটি ব্যবহার করতে চান তবে এটি জটিল / জটিল। একটি জিনিসের জন্য, মেটাবক্স আউটপুট ফেরত দেয় না, এটি কেবল এটি প্রতিধ্বনিত করে। সর্বোপরি, এটি আপনাকে সঠিক ইনপুট ক্ষেত্রের নাম দেয় না, তাই এটি সংরক্ষণ করবে না। ট্যাগগুলির কার্যকারিতাটির অনুলিপি তৈরি করতে একটি ধারণা হতে পারে একটি jQuery UI স্বতঃপূরণ ব্যবহার করা ।

তবে, আপনি যদি মিডিয়া সম্পাদকের ক্ষেত্রগুলির সাথে ঘুরেফিরে খেলতে চান তবে আপনি 'attachment_fields_to_edit'ক্ষেত্রগুলির অ্যারেটি হুক করতে এবং সম্পাদনা করতে পারেন । ফিল্টারটি কলব্যাকটিতে দুটি আর্গুমেন্ট পাস করে: প্রথম যুক্তি ক্ষেত্রগুলির অ্যারে, দ্বিতীয়টি সংযুক্তি পোস্টের অবজেক্ট। বিস্তারিত জানতে এখানে দেখুন:

http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-admin/includes/media.php.source.html#l1025


ধন্যবাদ, আমি একবার ঘুরে দেখব attachment_fields_to_editএবং কীভাবে এটি চলে।
রিক কারান

1

আমি @ রিককিউরানের ডব্লিউওএস মিডিয়া বিভাগগুলি একটি প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করে একটি প্লাগইন তৈরি করেছি। যাইহোক, ডাব্লুওএস মিডিয়া বিভাগগুলি, মিডিয়াতে বিভাগ সমর্থন যোগ করার মতো অন্যান্য প্লাগইনের মতো, আসলে একটি মেটাবক্স যুক্ত করে না, আমি ঠিক এটি করেছি।

সামগ্রিক দৃষ্টি

এটি অবিচ্ছিন্নভাবে পোস্ট এবং পৃষ্ঠাগুলিতে বিপাকগুলি গঠন করে তবে আমি একটি ফিল্টারিং ক্ষমতা অন্তর্ভুক্ত করে যা এটি ব্যবহার করা সহজ করে তোলে।

ফিল্টারযোগ্য বিভাগ

আপনি পৃষ্ঠা এবং পোস্টগুলিতে দেখতে পেলেন এমন সম্পূর্ণ বিভাগের মেটাবক্স তৈরি করছি, তবে স্টাইলিংয়ের অভাব এবং জাভাস্ক্রিপ্টের অভাবের কারণেই মিডিয়া পৃষ্ঠায় কাজ করে না এমন বিটগুলি লুকিয়ে রাখছি।

মেটাবক্সকে কীভাবে পুরোপুরি কার্যক্ষম করতে হবে সে সম্পর্কে যে কোনও ধারণার যে কোনও ধারণার আমি স্বাগত জানাই - এটি পরবর্তী সংস্করণে করার ইচ্ছা আমার something


0

দুর্দান্ত প্লাগইন রিক - খুব সহায়ক।

যদি আপনি এটি অনলোডে বাঁধার পরিবর্তে অনক্লিক ট্রিগার ইনলাইনটি সরান (এবং আরও কয়েকটি ছোট ছোট টুইট তৈরি করেন) তবে এটি ফ্ল্যাশ বাল্ক আপলোডারটিতেও কাজ করবে। বর্তমান সংস্করণে jQuery লোড ইভেন্টের পরে ফ্ল্যাশ লোড হয় যাতে বস্তুর অস্তিত্ব এখনও নেই।

সংশোধিত জেএস:

 function wos_category_click(cat){
    var container = jQuery(cat).closest("tbody");
    var cat_checked = jQuery(container).find("tr.all_categories input:checked");
    var cat_arr = jQuery(cat_checked).map(function() {
        return jQuery(this).val();
    }).get().join();
    jQuery(container).find("tr.category > td.field > input.text").val(cat_arr);
}

পিএইচপি ফাইলে ইনপুটটিতে অন্লিক যুক্ত করুন:

<input type="checkbox" onclick="wos_category_click(this)" class="wos-categories-cb"....

CSS ফাইলটিতে বাল্ক আপলোডার ফর্ম আইডি যুক্ত করুন:

form#media-single-form tr.category,form#file-form tr.category {
display:none; 

}


ধন্যবাদ ডিজেবোকা! আমি এখনই কোডবেসে এই সংশোধনটি যুক্ত করেছি, আমি প্লাগইন ফাইলগুলি আপডেট করেছি যা আমার ওয়েবসাইট থেকে suburbia.org.uk/page/projects.html#wos_media_categories-
রিক কাররান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.