হাই @ তৌফিক :
মন্তব্য পোস্টে ডাটাবেসে সম্পর্কিত হয়। ব্যবহারকারীদের সাথে সম্পর্কিত মন্তব্য পেতে আপনাকে অনেক কাজ করতে হবে।
আপনি কি ব্যবহারকারীদের জন্য একটি কাস্টম পোস্ট প্রকার তৈরির কথা বিবেচনা করেছেন এবং তারপরে user_meta
স্টোর সঞ্চয় করার জন্য একটি ক্ষেত্র post_id
, বা postmeta
সঞ্চয় করার জন্য একটি ক্ষেত্র user_id
, অথবা উভয়ই ব্যবহার করেছেন? আপনি যদি তা করেন তবে আপনি কোনও প্রচেষ্টা ছাড়াই মন্তব্যগুলি পাবেন।
হালনাগাদ
নিম্নলিখিতগুলিতে মন্তব্যে আমাদের আলোচনার পরে কোড তৈরি করা হয়।
আমি দীর্ঘদিন ধরে এরকম কিছু লেখার অর্থ করছি তবে আপনার প্রশ্ন অনুসন্ধান আমাকে এটিকে একটি অগ্রাধিকার হিসাবে পেয়েছে। আমি আপনার 'towfiq-person'
জন্য একটি কাস্টম পোস্ট প্রকার তৈরি করেছি এবং যখনই কোনও ব্যবহারকারী যুক্ত করা হয় তখন এটি স্বয়ংক্রিয়ভাবে কোনও ব্যক্তি পোস্ট যুক্ত করার জন্য সেট আপ করেছি এবং এটি ইমেল ঠিকানাটি কোনও পোস্ট কাস্টম ক্ষেত্রে সংযুক্ত কী হিসাবে ব্যবহার করে '_email'
।
এটি ব্যবহারকারীর সাথে কোনও উপযুক্ত ইমেল ঠিকানা যুক্ত ব্যক্তি পোস্টে যুক্ত করে যদি কোনও বিদ্যমান ব্যক্তির মতো একই ইমেলের সাথে কোনও ব্যবহারকারী যুক্ত বা আপডেট করা হয় (এটি কোনও ভাল ধারণা হতে পারে বা নাও পারে)) এবং এটি ব্যক্তি এবং ব্যক্তির সাথে ক্রস-রেফারেন্স রেফারেন্স দেয় ব্যবহারকারী postmeta এবং usermeta ক্ষেত্র ব্যবহার ব্যক্তি '_user_id'
এবং '_person_id'
যথাক্রমে।
এগুলি অবশ্যই ব্যবসায়ের নিয়ম যা আমি প্রয়োগ করার জন্য বেছে নিয়েছি তবে সেগুলি আপনার ব্যবহারের ক্ষেত্রে উপযুক্ত না হয়ে যেতে পারে সেই ক্ষেত্রে আপনাকে সেগুলি সংশোধন করতে হবে। ওয়ার্ডপ্রেস এই দু'টিকে সিঙ্ক থেকে বেরিয়ে আসতে দেয় এমন উপায়গুলি আপনি খুঁজে পেতে পারেন তবে সম্পূর্ণ পরীক্ষা ছাড়াই এটি জানা মুশকিল। আপনি যদি সমস্যাগুলি পান তবে আপনি সেগুলি সমাধান করার জন্য সর্বদা যুক্তি আপডেট করার জন্য সন্ধান করতে পারেন।
আপনি আপনার থিমের functions.php
ফাইলটিতে নিম্নলিখিত কোডটি অনুলিপি করতে পারেন :
class Towfiq_Person {
static function on_load() {
add_action('init',array(__CLASS__,'init'));
add_action('wp_insert_post',array(__CLASS__,'wp_insert_post'),10,2);
add_action('profile_update',array(__CLASS__,'profile_update'),10,2);
add_action('user_register',array(__CLASS__,'profile_update'));
add_filter('author_link',array(__CLASS__,'author_link'),10,2);
add_filter('get_the_author_url',array(__CLASS__,'author_link'),10,2);
}
static function init() {
register_post_type('towfiq-person',
array(
'labels' => array('name'=>'People','singular_name'=>'Person'),
'public' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'people'),
'hierarchical' => false,
//'supports' => array('title','editor','custom-fields'),
)
);
}
static function get_email_key() {
return apply_filters( 'person_email_key', '_email' );
}
static function profile_update($user_id,$old_user_data=false) {
global $wpdb;
$is_new_person = false;
$user = get_userdata($user_id);
$user_email = ($old_user_data ? $old_user_data->user_email : $user->user_email);
$email_key = self::get_email_key();
$person_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='%s' AND meta_value='%s'",$email_key,$user_email));
if (!is_numeric($person_id)) {
$person_id = $is_new_person = wp_insert_post(array(
'post_type' => 'towfiq-person',
'post_status' => 'publish', // Maybe this should be pending or draft?
'post_title' => $user->display_name,
));
}
update_user_meta($user_id,'_person_id',$person_id);
update_post_meta($person_id,'_user_id',$user_id);
if ($is_new_person || ($old_user_data && $user->user_email!=$old_user_data->user_email)) {
update_post_meta($person_id,$email_key,$user->user_email);
}
}
static function wp_insert_post($person_id,$person) {
if ($person->post_type=='towfiq-person') {
$email = get_post_meta($person_id,self::get_email_key(),true);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$user = get_user_by('email',$email);
if ($user) { // Associate the user IF there is an user with the same email address
update_user_meta($user->ID,'_person_id',$person_id);
update_post_meta($person_id,'_user_id',$user->ID);
} else {
delete_post_meta($person_id,'_user_id');
}
}
}
}
static function get_user_id($person_id) {
return get_user_meta($user_id,'_user_id',true);
}
static function get_user($person_id) {
$user_id = self::get_user_id($person_id);
return get_userdata($user_id);
}
static function get_person_id($user_id) {
return get_user_meta($user_id,'_person_id',true);
}
static function get_person($user_id) {
$person_id = self::get_person_id($user_id);
return get_post($person_id);
}
static function author_link($permalink, $user_id) {
$author_id = get_user_meta($user_id,'_person_id',true);
if ($author_id) // If an associate is found, use it
$permalink = get_post_permalink($author_id);
return $permalink;
}
}
Towfiq_Person::on_load();
আমি কী করেছি এবং কেন আপনার যদি কোনও স্পেসিফিকেশন প্রয়োজন হয় তবে কেবল মন্তব্যে জিজ্ঞাসা করুন।