লুপের বাইরে পোস্ট লেখকের আইডি পান


17

পোস্ট পোস্টের ই-মেইল (বা অন্য ব্যবহারকারীর মেটা ক্ষেত্র) সহ আমাকে পোস্ট সম্পাদনা ড্যাশবোর্ড মেটাবক্সে রাখা দরকার। সুতরাং প্রশাসক এই পোস্টটি পর্যালোচনা করলে এটি সম্পাদনা করা যেতে পারে।

$meta_id = get_the_author_meta( 'user_email', $user_id );

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DANE FIRMY',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'E-mail box',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

এই কোডটি কার্যকর হয় যখন _ user_id একটি পূর্ণসংখ্যা হয় (যখন আমি ম্যানুয়ালি উদাহরণস্বরূপ 4 সেখানে রাখি) তবে আমি গতিশীলভাবে বর্তমান লেখক আইডি পেতে চাই ( $user_id)।

get_the_author_meta('user_mail')নির্দিষ্ট না করেই কাজ করা উচিত $user_id(কোডেক্স বলেছে যে :)) তবে কোডটি functions.phpলুপের ভিতরে এবং বাইরে রয়েছে যাতে এটি কাজ করে না। আমি ওয়ার্ডপ্রেস এবং পিএইচপি দিয়ে শুরু করছি তাই পরবর্তী কী করব তা আমি জানি না।

এটি চেষ্টা করে দেখুন:

global $post;
$user_id=$post->post_author;

উত্তর:



9

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

/**
 * Gets the author of the specified post. Can also be used inside the loop
 * to get the ID of the author of the current post, by not passing a post ID.
 * Outside the loop you must pass a post ID.
 *
 * @param int $post_id ID of post
 * @return int ID of post author
*/
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}

হুম এটি আমার পক্ষে কাজ করে না - আমি মনে করি ফাংশনটি অবশ্যই একটি ফিল্টারকে আবদ্ধ করা উচিত তবে কোনটি জানতে হবে না।
th3rion

আমার জন্য কাজ করে ... আপনি কি নিশ্চিত যে এটিকে (বৈধ) পোস্ট আইডি দিচ্ছেন?
স্টিফেন হ্যারিস

তবে আমি এই মেটা ক্ষেত্রটি প্রতিটি পোস্টের জন্য সম্পাদনা স্ক্রিনে প্রদর্শন করতে চাই (কেবল একটির জন্য নয়) এবং পোস্ট লেখক আলাদা হতে পারে তাই সম্পাদনা স্ক্রিন অনুযায়ী পোস্ট_আইডি গতিশীলভাবে লোড করা আবশ্যক।
th3rion

$post_idগতিশীল সেট করুন । যদি কোনও মেটাবক্সের অভ্যন্তরে ব্যবহার করা হয় তবে আপনার মেটাবক্স কলব্যাকটি সেই $postবস্তুটি পাস করবে । সুতরাং আপনি ব্যবহার করতে পারেন $post->ID(আপনি সম্ভবত $post->post_authorসেই মেটার জন্য কেবল ব্যবহার করতে পারেন
স্টিফেন হ্যারিস

1
add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    global $post;
    $author_id=$post->post_author;
    $authord = get_the_author_meta( 'user_email', $author_id);
    echo $authord;
}

এই ফাংশনটির সাথে আমি পোস্ট সম্পাদনা স্ক্রিনে পোস্ট লেখক ইমেল প্রদর্শন করতে সক্ষম হয়েছি। এটি কাস্টম মেটা ক্ষেত্রের সাহায্যে কীভাবে এটি কাজ করতে হয় তা জানেন না তবে আমি মনে করি এখনই আমি কাছে আছি।


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