কোনও পোস্টের স্ট্যাটাস সহ সমস্ত পোস্ট কীভাবে পাবেন?


38

আমি একটি ফ্রন্ট এন্ড ড্যাশবোর্ড তৈরি করছি যেখানে আমার বর্তমান ব্যবহারকারীর সমস্ত পোস্ট দেখাতে হবে। তাই, আমি সব রাজ্যের পোস্ট দেখানোর জন্য, প্রধানত প্রয়োজন published, trashedএবং pending। আমি এখন একটি সাধারণ ক্যোয়ারী ব্যবহার করছি তবে এটি কেবল প্রকাশিত পোস্টগুলিই ফিরিয়ে দিচ্ছে।

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID              
    );
    query_posts($query);

কেউ সাহায্য করতে পারেন? আমার আর কী করা দরকার?


4
আপনি কি post_statusপ্যারামিটার ব্যবহার করে চেষ্টা করেছেন ? 'post_status' => 'any'?
t31os

2
আমি দৃ strongly ়ভাবে ব্যবহার করার পরিবর্তে WP_Query pre_get_postsবা get_postsপরিবর্তে সুপারিশ করছি query_posts। কখনও ব্যবহার করবেন নাquery_posts
টম জে নওয়েল

@ টমজে নওয়েল: এটাই আবার ফিরে এসেছে :) আমি এখন ডাব্লুপিওকিউয়ারি ব্যবহার করি সবচেয়ে বেশি ..
সিসির

1
@ সিসির সাবধান হন, WP_Queryফ্রন্ট- এন্ডের জন্য এবং get_postsঅ্যাডমিন প্রশ্নের জন্য যেমন সমস্যা রয়েছে wp_reset_postdata(যেমন এই নোট এবং টিকিট দেখুন )।
অরোভ্রত

উত্তর:


65

আপনি পোস্ট_স্ট্যাটাস প্যারামিটারটি ব্যবহার করতে পারেন:

* 'publish' - a published post or page
* 'pending' - post is pending review
* 'draft' - a post in draft status
* 'auto-draft' - a newly created post, with no content
* 'future' - a post to publish in the future
* 'private' - not visible to users who are not logged in
* 'inherit' - a revision. see get_children.
* 'trash' - post is in trashbin. added with Version 2.9. 

আমি নিশ্চিত নই যে এটি 'যে কোনও' গ্রহণ করে তাই আপনার পছন্দ মতো সমস্ত ধরণের ব্যবহার এবং অ্যারে গ্রহণ করে:

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID,
    'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash')    
);
$loop = new WP_Query($query);

while ( $loop->have_posts() ) : $loop->the_post();

7
আপনি get_post_stati()কাস্টমগুলি সহ সমস্ত স্ট্যাটাসগুলি পেতেও ব্যবহার করতে পারেন।
ফুসিয়া

5
একটি query_postsকল বন্ধ করার একটি নষ্ট সুযোগ ...
টম জে নওয়েল

খুব খারাপ আমরা এরকম কিছু করতে পারি না 'post_status' => array( '!inherit' );(উত্তরাধিকার বাদে অন্য কোনও পোস্ট_স্ট্যাটাস নির্দেশ করতে)
aequalsb

@ একায়েলসব কী সম্পর্কে'post_status' => array_diff(get_post_stati(), ['inherit']);
চেসলব

9

কোনও স্ট্যাটাস সহ সমস্ত পোস্ট কীভাবে পাবেন তা সহজ উপায় রয়েছে:

$articles = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any',
  'post_type' => get_post_types('', 'names'),
 )
);

এখন আপনি সমস্ত পোস্ট জুড়ে পুনরাবৃত্তি করতে পারেন:

foreach ($articles as $article) { 
 echo $article->ID . PHP_EOL; //...
}

2
p পোস্ট এবং Word পোস্ট ওয়ার্ডপ্রেসের নিজের দ্বিধাদ্বন্ধের সাথে দ্বন্দ্ব । আপনি যদি এই কোডটি প্রাথমিক (মূল বিষয়বস্তু) ডিভ বাদে অন্য কিছুতে রাখার জন্য ব্যবহার করছেন তবে এটি মূলত কী প্রদর্শিত হবে তা ওভাররাইট করবে। যদি সত্যিই আপনার উদ্দেশ্যটি মূল ক্যোয়ারির ফলাফলগুলি সম্পূর্ণরূপে প্রতিস্থাপন করা হয় তবে অবশ্যই এটি আপনি চান। তবে এখনও $ পোস্ট এবং $ পোস্ট ভেরিয়েবলগুলির নাম পরিবর্তন করা ভাল ধারণা।
হেনরিক এরল্যান্ডসন

5
@ হেনরিক আমি আপনার মন্তব্যটি একেবারেই কমিয়ে আনতে চাইছি না (আপনার যুক্তিটি যথাযথ এবং সুরক্ষিত) তবে আমি $ post / $ পোস্টগুলিকে গ্লোবাল $ পোস্ট / $ পোস্টের ভেরিয়েবলগুলি অ্যাক্সেস না করে কোনও ফাংশনের অভ্যন্তরে গ্রহণযোগ্য হিসাবে বিবেচনা করি - কারণ এটি আমাকে উন্নয়নের সময় যুক্তি বজায় রাখতে সহায়তা করে।
aequalsb

6

WP_Queryবর্গ পদ্ধতি ->query()একটি গ্রহণ anyজন্য যুক্তি post_status। দেখুন wp_get_associated_nav_menu_items()একটি প্রমাণ জন্য।

একই জন্য যায় get_posts()(যা উপরের কলের জন্য কেবল একটি আবরণ)।


3
ডব্লিউপি_কিউয়ারি ডক্স থেকে: 'যে কোনও' - 'প্রচ্ছন্ন_ফর্ম_সার্চ' পোস্টে প্রচ্ছদগুলি সত্য হিসাবে সেট করা ব্যতীত যে কোনও স্থিতি পুনরুদ্ধার করে। (সেখানে একটি টাইপো রয়েছে, তারা আসলে পোস্ট ধরণের পরিবর্তে পোস্ট স্ট্যাটাসগুলি বোঝায়)) এর অর্থ স্ট্যাটাসগুলি auto-draftএবং trashবাদ দেওয়া হয়।
তামিলেন

@ তমলিন আফাইক, এটি কোনও টাইপ নয়। এটি সর্বজনীনভাবে উপলভ্য পোস্ট প্রকার থেকে যে কোনও স্থিতি পুনরুদ্ধার করে । স্থিতি কেবল পদ। তারা নিজেরাই কোনও সরকারী বা ব্যক্তিগত সম্পত্তি পায়নি । আপনি অক্ষম ... একটি কারণ যে কোনও কারণেই হোক না কেন এটি একটি অক্ষম অক্ষম করতে পারেquery_var । Sidenote: পোস্টের স্থিতিটি বহুবচন হচ্ছে ...
কায়সার

1
আপনি যদি কোডটির মাধ্যমে সন্ধান করেন (ডক্সগুলি পড়ার চেয়ে প্রায়শই সহজ, আমি দেখতে পেলাম) আপনি দেখতে পাচ্ছেন যে WP_Query#get_posts()কলগুলি যে মানগুলির জন্য get_post_stati()ফিল্টার করে $wp_post_statusesযেখানে exclude_from_searchসত্য তা হলে এটি কোয়েরি থেকে এই স্ট্যাটাসগুলি সহ পোস্টগুলি বাদ দেয় । পোস্ট টাইপের জন্য যখন কোনও 'টাইপ' সেট করা থাকে তখন পোস্ট ধরণের জন্য একই ধরণের প্রক্রিয়া থাকে।
তমলিন

@ টমলিন $wp_post_statusesসম্পত্তির বিষয়বস্তুগুলি যাচাই করার পরে , আমাকে স্বীকার করতে হবে যে আপনি ঠিক বলেছেন :)
কায়সার

ট্র্যাশ স্থিতির জন্য কাজ করে না।
ম্যাক্সওয়েল

2

অধিকাংশ ক্ষেত্রে আপনি ব্যবহার করতে পারেন get_posts()সঙ্গে 'any'এই জন্য পরামিতি:

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any',
  'post_type' => 'my-post-type',
 )
);

কিন্তু এই ভাবে আপনি অবস্থা পোস্টগুলি পাবেন না trashএবং auto-draft। আপনার এগুলি স্পষ্টভাবে সরবরাহ করা দরকার:

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any, trash, auto-draft',
  'post_type' => 'my-post-type',
 )
);

অথবা আপনি বিদ্যমান বিদ্যমান স্ট্যাটাসগুলি স্পষ্টভাবে সরবরাহ করতে get_post_stati () ফাংশনটি ব্যবহার করতে পারেন:

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => get_post_stati(),
  'post_type' => 'my-post-type',
 )
);

1

এমনকি আপনি যদি পাস anyহিসাবে post_status, আপনি এখনও ফলাফলে পোস্ট পাবেন না যদি নিম্নলিখিত অবস্থার সব সত্য হল:

  1. একটি পোস্ট পোস্ট করা হচ্ছে। এর একটি উদাহরণ দিয়ে জিজ্ঞাসা করা হবে name, অর্থাৎ স্লাগ।
  2. পোস্টটির একটি পোস্টের স্থিতি রয়েছে যা সর্বজনীন নয়।
  3. ক্লায়েন্টটির একটি সক্রিয় প্রশাসক সেশন নেই, যেমন আপনি বর্তমানে লগইন নেই।

সমাধান

প্রতিটি স্ট্যাটাসের জন্য স্পষ্টভাবে জিজ্ঞাসা করুন । উদাহরণস্বরূপ, যে স্টাটিগুলি নেই trashবা তাদের কাছে জিজ্ঞাসা করা (আপনি এগুলি auto-draftচান এটির সম্ভাবনা খুব কম) আপনি এই জাতীয় কিছু করতে পারেন:

$q = new WP_Query([
    /* ... */
    'post_status' => get_post_stati(['exclude_from_search' => false]),
]);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.