क्या कस्टम पोस्ट टाइप पोस्ट आईडी को सिर्फ स्लग से पकड़ना संभव है?
जितना मुझे पता है कि हम शीर्षक का उपयोग करके आईडी से प्राप्त कर सकते हैं। लेकिन कस्टम पोस्ट प्रकार में एक ही शीर्षक हो सकता है ताकि स्लग अद्वितीय हैं क्या यह संभव है ???
क्या कस्टम पोस्ट टाइप पोस्ट आईडी को सिर्फ स्लग से पकड़ना संभव है?
जितना मुझे पता है कि हम शीर्षक का उपयोग करके आईडी से प्राप्त कर सकते हैं। लेकिन कस्टम पोस्ट प्रकार में एक ही शीर्षक हो सकता है ताकि स्लग अद्वितीय हैं क्या यह संभव है ???
जवाबों:
आप उपयोग कर सकते हैं get_page_by_path()
- नाम को मूर्ख मत बनने दो, तीसरा तर्क है पोस्ट टाइप:
if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
$id = $post->ID;
else
$id = 0;
यदि आप कुछ दिनों की प्रतीक्षा करते हैं, और Wordpress 4.4 में अपग्रेड करते हैं जो 8 दिसंबर ( AFAIK ) को जारी किया जाएगा , तो आप नए post_name__in
पैरामीटर का उपयोग कर सकते हैं WP_Query
जिसमें स्लग की एक सरणी लेता है
यदि आपको संपूर्ण पोस्ट ऑब्जेक्ट की आवश्यकता है
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );
अगर आपको केवल आईडी की जरूरत है
$args = [
'post_type' => 'my_custom_post_type',
'posts_per_page' => 1,
'post_name__in' => ['post-slug'],
'fields' => 'ids'
];
$q = get_posts( $args );
var_dump( $q );
post_name
संपत्ति और category_name
पैरामीटर की तरह ही गलत भी है , जो होना चाहिए था slug
और नहींname
अगर आप सिर्फ पोस्ट आईडी चाहते हैं तो यह एक लाइन में ट्रिक करेगा।
url_to_postid( site_url('the_slug') );
url_to_postid
एक बहुत ही लचीला कार्य है: आप किसी भी प्रकार के पर्मलिंक / पूर्ण URL में पास कर सकते हैं और उस URL के लिए सबसे सटीक पोस्ट-आईडी प्राप्त कर सकते हैं। हालाँकि, लचीले उपयोग के कारण यह काफी धीमा है (बहुत से समापन बिंदुओं / पोस्ट-प्रकारों के साथ)। यदि आप केवल एक विशिष्ट पोस्ट प्रकार के लिए एक स्लग में गुजरते हैं, तो यह उपयोग करने के लिए बहुत तेज़ हैget_page_by_path()