ব্যবহারকারী প্রোফাইল পৃষ্ঠায় মন্তব্য?


9

আমি এই টিউটোরিয়ালটির দিকনির্দেশনা সহ কাস্টম ব্যবহারকারী প্রোফাইল তৈরি করার চেষ্টা করছি: কীভাবে ওয়ার্ডপ্রেস প্রোফাইল পৃষ্ঠা তৈরি করবেন

আমি এটি সফলভাবে আমার থিমটিতে প্রয়োগ করেছি, সবকিছু ভালভাবে কাজ করছে। এখন আমি যা অর্জন করতে চাই তা হল ব্যবহারকারী প্রোফাইল পৃষ্ঠাতে মন্তব্য টেমপ্লেট পাওয়া, যেখানে অন্যান্য নিবন্ধিত ব্যবহারকারী তার প্রোফাইল পৃষ্ঠায় মন্তব্য পোস্ট করতে পারে, ফেসবুক ওয়াল বা লাস্ট.এফএম শোরবক্সের মতো টাইপ করুন।

আমি এটির মতো চেষ্টা করছি:

লেখকের পৃষ্ঠায় আমি এই লাইনটি যুক্ত করছি:

<?php comments_template(); ?>

তবে তা দেখা যাচ্ছে না। তারপরে আমি এইভাবে চেষ্টা করেছি: ওয়ার্ডপ্রেসের বাইরে ওয়ার্ডপ্রেস মন্তব্যগুলি পান

এটি ঠিকমত মন্তব্য টেমপ্লেট যুক্ত করে তবে কার্যকর হয় না। আপনি যখন সাবমিট বাটনে ক্লিক করেন এটি একটি ফাঁকা পৃষ্ঠায় পুনঃনির্দেশ করে।

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

যদি কেউ আমাকে সঠিক দিকনির্দেশনা দেখাতে পারে তবে আমি চিরকাল কৃতজ্ঞ থাকব।

ধন্যবাদ তৌফিক আই।

উত্তর:


13

হাই @ তৌফিক :

মন্তব্য পোস্টে ডাটাবেসে সম্পর্কিত হয়। ব্যবহারকারীদের সাথে সম্পর্কিত মন্তব্য পেতে আপনাকে অনেক কাজ করতে হবে।

আপনি কি ব্যবহারকারীদের জন্য একটি কাস্টম পোস্ট প্রকার তৈরির কথা বিবেচনা করেছেন এবং তারপরে 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();

আমি কী করেছি এবং কেন আপনার যদি কোনও স্পেসিফিকেশন প্রয়োজন হয় তবে কেবল মন্তব্যে জিজ্ঞাসা করুন।


সুতরাং, আপনি যা পরামর্শ দিচ্ছেন তা হ'ল একটি কাস্টম পোস্ট প্রকার তৈরি করুন এবং লেখক পৃষ্ঠায় লুপটি প্রয়োগ করুন। এবং তারপরে মন্তব্য ফর্মটি রেখে দিন যাতে অন্যান্য ব্যবহারকারীরা সেই ফাঁকা পোস্টে মন্তব্য পোস্ট করতে পারেন? তবে একই মন্তব্য প্রতিটি ব্যবহারকারীর প্রোফাইল পৃষ্ঠাতে প্রদর্শিত হবে। এটি কোনও ফাংশন তৈরি করে এড়ানো যেতে পারে যা কোনও ব্যবহারকারী নিবন্ধিত হওয়ার পরে wp_insert_post () দিয়ে ব্যবহারকারীর নামটির শিরোনাম সহ কাস্টম পোস্ট স্বয়ংক্রিয়ভাবে তৈরি করবে। পোস্ট লেখক ব্যবহারকারী হতে পারে। সুতরাং, যখন আমরা পোস্টের লুপটি টান করি তখনই আমরা নিশ্চিত করি যে পোস্টটি লেখক = ব্যবহারকারীর সাথে রয়েছে shows আমি কি সঠিক দিকে আছি? আমি কি জটিল করে তুলছি?
তৌফিক

@ তৌফিক: প্রকৃতপক্ষে, ব্যবহারকারী প্রতি আপনার authorকাস্টম পোস্টের একটি পোস্ট তৈরি করুন । তারপরে taxonomy-author.phpটেমপ্লেট ফাইলে, আপনি বর্তমান লেখকের সমস্ত পোস্টের জন্যও জিজ্ঞাসা করুন এবং এভাবে আপনার লেখক পৃষ্ঠাটি "নকল"। আপনি এটি অন্য উপায়েও করতে পারেন (লেখকের টেম্পলেট ব্যবহার করুন এবং কাস্টম পোস্ট অন্তর্ভুক্ত করুন) তবে তারপরে আপনাকে সঠিক পোস্ট আইডি ব্যবহার করতে মন্তব্য ফর্মটি চালিত করতে হবে।
জান ফ্যাব্রি

আপনার উত্তর Fabry জন্য ধন্যবাদ। ট্যাক্সনমি সম্পর্কে আমার খুব কম জ্ঞান নেই। আমি এই পৃষ্ঠাটি থেকে কিছু বের করার চেষ্টা করেছি: কোডেক্স.ওয়ার্ডপ্রেস.আর / টেম্পলেট_এইয়ারচি পোস্ট কাস্টম ট্যাক্সনোমিজ প্রদর্শন তবে ব্যর্থ। আপনি কি আমাকে বলতে পারেন যে শ্রেনী-লেখক.এফপি কি এবং এটি কী করবে? এবং যদি আমি অন্যভাবে চেষ্টা করে দেখি তবে পোস্ট আইডিকে ট্রিক করার বিষয়ে আপনার কোনও ধারণা আছে ?? ধন্যবাদ
তৌফিক

@ তৌফিক: আমার ভুল, এটা হওয়া উচিত নয় taxonomy-author.php, তবে single-author.php। আপনি একটি কাস্টম ট্যাক্সনমি তৈরি করেন না, তবে একটি কাস্টম পোস্ট প্রকার। এটি single-author.phpহ'ল টেম্পলেট ফাইল যা authorকাস্টম পোস্ট ধরণের একক পোস্ট প্রদর্শন করতে ব্যবহৃত হয় । আমি আপনাকে এই পথে যেতে পরামর্শ দিই, এটি সবচেয়ে সহজ (আপনি /page/2/যদি পেইজিংও ব্যবহার করতে পারেন ( ) যদি আপনার সেই লেখকের অনেক পোস্ট থাকে)।
জান ফ্যাব্রি

1
@Towfiq? আমি যখন আমার কোডটি পর্যালোচনা করেছি তখন কীভাবে আমি তা মিস করেছি? হুঁ, দুঃখিত। যাইহোক, ত্রুটি কোথায় ঘটেছে আমাকে বললে এটি কতটা সহায়ক তা হওয়া উচিত। :) আমিও অবাক হয়েছি এটি আমার ত্রুটি ছাড়াই কাজ করেছে। বিটিডাব্লু, আমি আগে অন্যরকম হুক ব্যবহার করছিলাম যাতে সেটাই ছিল অবশিষ্ট কোড। এখানে এটা কি ঠিক করা উচিত আছে: if ($person->post_type=='towfiq-person') {। আমাকে
জানাবেন

0

কেবল লেখক.এফপিপি-র ভিতরে একটি কাস্টম পোস্ট ধরণের লুপ যুক্ত করুন এবং সেই কাস্টম পোস্টের মন্তব্য ফর্মটি ব্যবহার করুন। আমি এটি অনেক বার করেছি এবং এটি দুর্দান্ত কাজ করে।

<?php /* Display the author's comments from the custom post type (AAA) */ ?>
<?php
$authorid = get_the_author_meta( ID, $userID );
$args=array('author' => $authorid,'post_type' => 'AAA', 'numberposts' => -1);
$cquery=new WP_Query($args);
if($cquery->have_posts()):
while($cquery->have_posts()):
$cquery->the_post();
?>          
<div class="comments-area">
    <?php comments_template(); ?>
</div>
<?
    endwhile;
        wp_reset_postdata();
    endif;
?>

https://github.com/pjeaje/code-snippets/blob/gh-pages/GP%20author.php%20with%20multiple%20loops


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