php - स्लग द्वारा वर्डप्रेस क्वेरी एकल पोस्ट




wordpress (5)

इस पल के लिए जब मैं लूप का उपयोग किए बिना एक ही पोस्ट दिखाना चाहता हूं तो मैं इसका उपयोग करता हूं:

<?php
$post_id = 54;
$queried_post = get_post($post_id);
echo $queried_post->post_title; ?>

समस्या यह है कि जब मैं साइट को स्थानांतरित करता हूं, तो आईडी आमतौर पर बदल जाती है। क्या इस पोस्ट को स्लग से पूछने का कोई तरीका है?


Answers

वर्डप्रेस कोडेक्स से:

<?php
$the_slug = 'my_slug';
$args = array(
  'name'        => $the_slug,
  'post_type'   => 'post',
  'post_status' => 'publish',
  'numberposts' => 1
);
$my_posts = get_posts($args);
if( $my_posts ) :
  echo 'ID on the first post found ' . $my_posts[0]->ID;
endif;
?>

वर्डप्रेस कोडेक्स पोस्ट प्राप्त करें


जैसा कि वर्डप्रेस एपीआई बदल गया है, आप param_posts को param 'post_name' के साथ उपयोग नहीं कर सकते हैं। मैंने मार्टेंस को थोड़ा सा संशोधित किया है:

function get_post_id_by_slug( $slug, $post_type = "post" ) {
    $query = new WP_Query(
        array(
            'name'   => $slug,
            'post_type'   => $post_type,
            'numberposts' => 1,
            'fields'      => 'ids',
        ) );
    $posts = $query->get_posts();
    return array_shift( $posts );
}

कैसा रहेगा?

<?php
   $queried_post = get_page_by_path('my_slug',OBJECT,'post');
?>

एक कम महंगी और पुन: प्रयोज्य विधि

function get_post_id_by_name( $post_name, $post_type = 'post' )
{
    $post_ids = get_posts(array
    (
        'post_name'   => $post_name,
        'post_type'   => $post_type,
        'numberposts' => 1,
        'fields' => 'ids'
    ));

    return array_shift( $post_ids );
}

इसे अपने सर्वर की कमांड लाइन से चलाएं:

 mysqlcheck --repair --all-databases




php wordpress