কিভাবে লুপের বাইরে লেখক আইডি পাবেন


16

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

1।

$author_id=$post->post_author;

2।

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

3।

$post_tmp = get_post($post_id);
$author_id = $post_tmp->post_author;

4।

$author_id = $posts[0]->post_author;

এটি লেখার জন্য লেখকের আইডি দরকার:

$address = get_the_author_meta('user_email', $author_id);

কোনও পরামর্শ?


এটি পরীক্ষা করে দেখুন , এটি আমার জন্য কাজ করেছে।
আসফ চের্তকফ

উত্তর:


38

লুপের বাইরে পোস্ট লেখক আইডি পাওয়ার সহজ ও সর্বাধিক সহজ উপায়, যদি আপনি পোস্ট আইডিটি জানেন, তবে ওয়ার্ডপ্রেস কোর ফাংশনটি ব্যবহার করা get_post_field()

$post_author_id = get_post_field( 'post_author', $post_id );

আপনি এখনও যে পৃষ্ঠায় রয়েছেন তার পোস্ট আইডিটি জানেন না, তবে ডাব্লুপি ৩.১ যেহেতু সবচেয়ে সহজ কাজটি হল get_queried_object_id()(পদ্ধতিগুলির তালিকায় এটি দেখুন) ফাংশনটি ব্যবহার করা যা লুপের বাইরেও কাজ করে।

$post_id = get_queried_object_id();

যদি এটি আপনার পক্ষে কাজ করে না তবে দয়া করে আপনি কোথায় আপনার কোড চালানোর চেষ্টা করছেন তার আরও বিস্তারিত ব্যাখ্যা দিন এবং আমরা আরও সাহায্য করতে পারি কিনা তা আমরা দেখতে পারি।


9

ওয়ার্ডপ্রেস লুপের বাইরে কীভাবে লেখক আইডি পাবেন এবং পাবেন তা এখানে:

<?php
global $post;
$author_id=$post->post_author;
?>

তাহলে আমাদের পক্ষে এটি সম্ভব the_author_meta:

<?php
the_author_meta( 'user_nicename', $author_id );
?>

পোস্ট আইডিতে আপনার অ্যাক্সেস থাকলে এটি দুর্দান্ত কাজ করে। আপনি যদি এখনই মানটি আউটপুট না করতে চান তবে আপনি get_t__uthor_meta ('user_nicename',, Author_id) ব্যবহার করতে পারেন
অ্যান্ড্রু এম

3

আপনি কোথায় আছেন তার উপর নির্ভর করে। যদি আপনি একটি একক পৃষ্ঠায় থাকেন (উদাহরণস্বরূপ, এখানে কেবলমাত্র একটি {Post পোস্টের প্রকার Hereোকান}} এখানে দেখানো হয়), আপনি ব্যবহার করতে পারেন get_queried_objectযা পোস্ট অবজেক্টটি আনবে।

<?php
if (is_singular()) {
    $author_id = get_queried_object()->post_author;
    $address = get_the_author_meta('user_email', $author_id);
}

আপনি অন্য কোথাও থাকলে, আপনি বিশ্বব্যাপী $wp_queryঅবজেক্টটি ব্যবহার করতে এবং এর $postsসম্পত্তিটি পরীক্ষা করতে পারেন । এটি একক পৃষ্ঠাগুলিতেও কাজ করা উচিত।

<?php
global $wp_query;
if (!empty($wp_query->posts)) {
    $author_id = $wp_query->posts[0]->post_author;
    $address = get_the_author_meta('user_email', $author_id);
}

আপনি লুপটিকে "মিথ্যা সূচনা" করতে পারেন এবং এটির লেখক আইডি ধরার জন্য এটি রিওয়াইন্ড করতে পারেন। এটির জন্য কোনও অতিরিক্ত ডাটাবেস হিট বা এর মতো হবে না। ওয়ার্ডপ্রেস সমস্ত পোস্ট একবারে (লেখার সময়) এনেছে। অ্যারের শুরুতে rewind_postsকেবল বর্তমান পোস্ট (গ্লোবাল $post) অবজেক্টটি পুনরায় সেট করে । loop_startক্ষয়ক্ষতিটি হ'ল এর ফলে অ্যাকশনটি আপনার ইচ্ছার চেয়ে আগে আগুন জ্বলতে পারে - একটি বিশাল চুক্তি নয়, সচেতন হওয়ার মতো কিছু।

<?php
// make sure you're at the beginning.
rewind_posts();

// start the loop
the_post();

// get what you need
$address = get_the_author_meta('user_email');

// back to normal
rewind_posts();

2

দেখে মনে হচ্ছে এটি লুপের বাইরে কাজ করে, সম্ভবত এটি সহায়তা করবে।

    $thelogin = get_query_var('author_name');
    $theauthor = get_userdatabylogin($thelogin);

আপনি নিজে নিজে পোস্টের আইডি সেট করতে এবং এইভাবে দখল করতে পারেন:

global $wp_query;
$thePostID = $wp_query->post->ID;
$postdata = get_post($thePostID, ARRAY_A);
$authorID = $postdata['post_author'];

লুপ অ্যাক্সেসের বাইরে আইডি ম্যানুয়ালি পোস্ট করতে আইডি পরিবর্তন করুন।

দুর্দান্ত সমাধান নয়, তবে আশা করি এটি সহায়তা করবে।


0

লেখক সম্পর্কিত তথ্য সহ বৈশিষ্ট্যযুক্ত পোস্টগুলি প্রদর্শন করার জন্য একটি উইজেট তৈরি করার চেষ্টা করার সময় আমার এখানে একই সমস্যা ছিল।

আমি @ chrisguitarguy ২ য় টিপ থেকে কিছু ইঙ্গিত ব্যবহার করেছি।

আমার কোডটি এরকম দেখাচ্ছে:

<?php    

$count = 0;
$query_args = array(
      'posts_per_page' => 5,
     );
$com_query = new WP_Query( $query_args );

$feat_posts = $com_query->posts; // array, so we can access each post based on position

while ($com_query->have_posts()) {              
    $com_query->the_post();
        $author_name= get_the_author_meta('user_nicename',  $feat_posts[$count]->post_author);
        $count++;
}

0

লুপের বাইরে লেখকের আইডি পেতে এবং পেতে:

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

তারপরে ব্যবহার করুন

get_the_author_meta('field_name', $author_id)

মনে রাখবেন আপনি লুপে পোস্ট আইডি আনছেন এবং লেখকের সাইড লুপটি অ্যাক্সেস করছেন তবে এটি কেবল লুপে সর্বশেষ পোস্ট আইডির ডেটা সরবরাহ করবে


0

আশা করি এই wil সাহায্য:

$args= array(
    'post_type' =>'any',
    'post_status' => 'publish',
    'order' => 'ASC',
    'posts_per_page' => '-1'
);
$posts = new WP_Query($args);
$posts = $posts->posts;   

foreach($posts as $post) { 
  switch ($post->post_type) {
     case 'page': 
           // get the author's id through the post or page
           $id = get_post_field( 'post_author', $post->ID);
           // the first parameter is the name of the author 
           // of the post or page and the second parameter 
           // is the id with which the function obtains the name of the author.
           echo get_the_author_meta('display_name', $id);
        break;
    case 'post': 
         $id = get_post_field( 'post_author', $post->ID;
        echo get_the_author_meta('display_name', $id);
  }
}

-2

আপনি কেন_অর্থর_মেটা ব্যবহার করবেন না

<p>The email address for user id 25 is <?php the_author_meta('user_email',25); ?></p>

এটি লুপের মধ্যে ব্যবহার করা যেতে পারে


ধন্যবাদ, তবে সমস্যাটি হ'ল আমি লুপের বাইরে এবং এটি ঠিক করতে পারি না। আপনি যখন লুপটির বাইরে থাকবেন তখন দ্বিতীয় যুক্তি ($ লেখক_আইডি) সরবরাহ করা দরকার।
মার্সে কাস্ত্রো

আচমকা! কোন ধারনা? এটি আমাকে পাগল করছে: - /
মার্স কাস্ত্রো

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