প্রোগ্রামার হিসাবে আমি আমার পোস্টের ধরণের সংযোগ করতে নিজের কোড লিখতে শুরু করি। এটি দ্রুত উপায় নয়, এটি সহজ নয়, তবে এটি অনেক মজাদার।
পোস্টের ধরণ
আমরা দুটি সাধারণ পোস্ট ধরণের তৈরি করে শুরু করি Authorএবং Books:
add_action('init', 'p2p2_register_author');
add_action('init', 'p2p2_register_book');
function p2p2_register_author(){
$labels = array(
'name' => 'Author',
'singular_name' => 'Author',
'add_new' => 'Add New',
'add_new_item' => 'Add New Author',
'edit_item' => 'Edit Author',
'new_item' => 'New Author',
'all_items' => 'All Authors',
'view_item' => 'View Authors',
'search_items' => 'Search Authors',
'not_found' => 'No authors found',
'not_found_in_trash' => 'No authors found in Trash',
'parent_item_colon' => '',
'menu_name' => 'Authors'
);
register_post_type(
'Author',
array (
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'author' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
)
);
}
function p2p2_register_book(){
$labels = array(
'name' => 'Books',
'singular_name' => 'Book',
'add_new' => 'Add New',
'add_new_item' => 'Add New Book',
'edit_item' => 'Edit Book',
'new_item' => 'New Book',
'all_items' => 'All Books',
'view_item' => 'View Book',
'search_items' => 'Search Books',
'not_found' => 'No books found',
'not_found_in_trash' => 'No books found in Trash',
'parent_item_colon' => '',
'menu_name' => 'Books'
);
register_post_type(
'Book',
array (
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'book' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
)
);
}
কিছুই অভিনব। আসলে, এটি কোডেক্স থেকে !
বিপাক
আসুন আমাদের বইয়ের পোস্টের ধরণে আমাদের লেখকের জন্য একটি মেটাবক্স যুক্ত করে চালিয়ে দেওয়া যাক:
add_action('admin_init', 'p2p2_add_author_metabox');
function p2p2_add_author_metabox(){
add_meta_box(
'book_author',
__('Book Author', 'bandpress'),
'p2p2_book_author_metabox',
'book',
'side',
'default',
array( 'id' => 'p2p2_author')
);
}
এখানে আপনি একটি কলব্যাক ফাংশন দেখতে পাবেন p2p2_book_author_metaboxযা আমাদের মেটাবক্সের অভ্যন্তরে যা হতে চলেছে।
বিপাকের বিষয়বস্তু
আসুন ফাংশনটি তৈরি করুন:
function p2p2_book_author_metabox($post, $args){
wp_nonce_field( plugin_basename( __FILE__ ), 'p2p2_book_author_nonce' );
$author_id = get_post_meta($post->ID, 'p2p2_book_author', true);
echo "<p>Select the author of the book</p>";
echo "<select id='p2p2_book_author' name='p2p2_book_author'>";
// Query the authors here
$query = new WP_Query( 'post_type=author' );
while ( $query->have_posts() ) {
$query->the_post();
$id = get_the_ID();
$selected = "";
if($id == $author_id){
$selected = ' selected="selected"';
}
echo '<option' . $selected . ' value=' . $id . '>' . get_the_title() . '</option>';
}
echo "</select>";
}
যাদুটি এখানে ঘটে। প্রথমে আমরা লেখকদের জন্য ডাটাবেসটি অনুসন্ধান করতে যাচ্ছি এবং তারপরে আমরা <select>আমাদের প্রশ্নের ফলাফলগুলি পূরণ করব । সম্পর্কে আরও জানতে কোডেক্স চেক করুন WP_Query। এখন আপনি নিজের বুক পোস্টের ধরণে যেতে পারেন এবং আপনার ড্রপডাউনটি দেখতে পারেন:

আমাদের বিষয়বস্তু সংরক্ষণ করা হচ্ছে
অবশ্যই আমরা আমাদের নির্বাচনটি সংরক্ষণ করতে চাই তাই আমরা অন্য একটি ফাংশন যুক্ত করব যা আমাদের জন্য মেটাবক্স সংরক্ষণ করবে:
add_action('save_post', 'p2p2_save_author_metabox', 1, 2);
function p2p2_save_author_metabox($post_id, $post){
// Don't wanna save this now, right?
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
if ( !isset( $_POST['p2p2_book_author_nonce'] ) )
return;
if ( !wp_verify_nonce( $_POST['p2p2_book_author_nonce'], plugin_basename( __FILE__ ) ) )
return;
// We do want to save? Ok!
$key = 'p2p2_book_author';
$value = $_POST["p2p2_book_author"];
if ( get_post_meta( $post->ID, $key, FALSE ) ) { // If the custom field already has a value
update_post_meta( $post->ID, $key, $value );
} else { // If the custom field doesn't have a value
add_post_meta( $post->ID, $key, $value );
}
if ( !$value ) delete_post_meta( $post->ID, $key ); // Delete if blank
}
এখন যান এবং একটি লেখক সঙ্গে একটি বই সংরক্ষণ করুন! বইটির লেখক wp_postmetaডাটাবেস সারণীতে সংরক্ষণ করা হবে এবং ড্রপডাউনয়ের নির্বাচিত মানটি মেটাতে থাকবে।
বইয়ের জন্য একজন লেখক কলাম
আসুন আমাদের বইগুলির জন্য প্রশাসক অঞ্চলটি প্রসারিত করুন। আমরা কলামগুলি পরিবর্তন করে শুরু করব:
add_filter('manage_edit-book_columns', 'p2p2_add_book_columns');
function p2p2_add_book_columns($columns){
$new_columns['cb'] = '<input type="checkbox" />';
$new_columns['title'] = _x('Title', 'column name', 'bandpress');
$new_columns['p2p2_author'] = __('Author', 'bandpress');
return $new_columns;
}
এই ফাংশনটি নিশ্চিত করে যে আমরা কেবল কলামগুলির শিরোনাম এবং p2p2_author দেখতে পাচ্ছি। ওয়ার্ডপ্রেসের ভর সম্পাদনা কার্যকারিতার জন্য সিবি চেকবক্স কলামটি প্রয়োজন। এখন আমাদের কলামে কিছু তথ্য যুক্ত করা দরকার। আমরা এই ফাংশন যুক্ত:
add_action('manage_book_posts_custom_column', 'p2p2_fill_book_columns', 10, 2);
function p2p2_fill_book_columns($column_name, $id) {
global $wpdb;
switch ($column_name) {
case 'p2p2_author':
$author_id = get_post_meta($id, 'p2p2_book_author', true);
$author = get_post($author_id);
$permalink = get_permalink($author_id);
echo "<a href='" . $permalink . "'>" . $author->post_title . "</a>";
break;
default:
break;
} // end switch
}
স্যুইচটি প্রতিটি কলামের জন্য যা আপনি কেবল আগের ফাংশনে যুক্ত করেছেন। আপনি যা দেখতে চান তা প্রতিধ্বনি করে আপনি এটি পূরণ করুন। আমরা আমাদের বইয়ের লেখকটি পেয়েছি এবং তার 'প্রোফাইল পৃষ্ঠায়' একটি সুন্দর পারমালিঙ্ক তৈরি করি। এটি দেখতে এটির মতো:

চলবে
আমরা আমাদের ওয়ার্ডপ্রেস সাইটের ব্যাকএন্ডে দুটি পোস্ট প্রকার সংযুক্ত করেছি, তবে আমরা এর সামনের অংশে কিছুই দেখতে পাচ্ছি না। এটি সম্পাদন করতে আরও অনেক বেশি কাজ প্রয়োজন তবে সম্ভাবনা কিছুটা অন্তহীন। আমরা পারে:
- লেখকের বই বাছাই করুন
- লেখক পৃষ্ঠায় বইয়ের একটি তালিকা দেখান
- বইয়ের পৃষ্ঠায় লেখকের অন্যান্য বইয়ের একটি তালিকা দেখান
- লেখকের ছবি সহ অভিনব মেটাবক্স তৈরি করুন
- তিনি লিখেছেন বইগুলির জন্য লেখক প্রশাসক পৃষ্ঠায় একটি কলাম তৈরি করুন
- এবং আরো অনেক কিছু...
আমি এই উত্তরের উপর কাজ চালিয়ে যাব, কারণ আমার নিজের এই সমাধানটি প্রয়োজন। তবে আমি আপাতত কাজ করা বন্ধ করব stop আমি আগামীকাল এই উত্তরটি আপডেট করা শুরু করব।