quot_post शीर्षक से?


18

क्या शीर्षक का उपयोग करके WP_Query या query_posts का उपयोग करके पोस्ट का लूप बनाना संभव है?

अर्थात

$args = array('post_title'='LIKE '.$str.'% ');

$res = WP_Query($arg);

// the loop...


// trying this now...
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title like 'Abb%' ");

echo count($mypostids).", ";    // works but can't echo out array of IDs for the next args?

$args = array(
    'post__in'=> $mypostids
);

$res = WP_Query($args);

while( $res->have_posts() ) : $res->the_post(); ...

जवाबों:


31

functions.php

<?php
add_filter( 'posts_where', 'title_like_posts_where', 10, 2 );
function title_like_posts_where( $where, $wp_query ) {
    global $wpdb;
    if ( $post_title_like = $wp_query->get( 'post_title_like' ) ) {
        $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( $wpdb->esc_like( $post_title_like ) ) . '%\'';
    }
    return $where;
}
?>

फिर:

$args = array(
    'post_title_like' => $str
);
$res = new WP_Query($args);

दूसरे तर्क (संदर्भित $wp_query) को छोड़कर महान काम करता है, जो फ़िल्टर कॉलबैक का हिस्सा नहीं लगता है ( codex.wordpress.org/Plugin_API/Filter_Reference/posts_where देखें ) और एक त्रुटि उत्पन्न करेगा।
— मैरीसिडेड

1
वास्तव में, कोड सही है, कम से कम WP 4.1.1 में। यह कोडेक्स है जो दूसरे तर्क को छोड़ रहा है, इसलिए यदि आप add_filterउदाहरण के रूप में 2 तर्कों की घोषणा करते हैं, तो यह ठीक काम करता है। इस समाधान का एक और लाभ यह है कि यह कस्टम पोस्ट प्रकारों के लिए काम करता है।
— yitwail

1
यह उत्तर स्वीकार किया जाना चाहिए क्योंकि यह दिखाता है कि यह वर्डप्रेस बिल्ट-इन फ़ंक्शन का उपयोग करके और कस्टम SQL क्वेरी का उपयोग न करने के लिए कैसे किया जाए।
— सुदर

1
ऐसा लगता है, कि %यहाँ पहली याद आती है। ठीक बाद LIKE \'। मैंने इसे जोड़ा और इसने (4.2.4) काम करना शुरू कर दिया
— vladkras

हां, पहले लापता %, जोड़ा भी, और काम करता है :) (शायद जवाब को संपादित करना चाहिए?)
— टोनी मिशेल Caubet

3

इस पोस्ट की मदद से अंत में यह काम कर रहा है। चीयर्स गायस;

$finalArgs =  array (       
        'posts_per_page'=>5,
        'order' => 'ASC',
        'post_type' => 'school'                         
    );

    // Create a new instance
    $searchSchools = new WP_Query( $finalArgs );

    $mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '".$str."%' ");

    $args = array(
        'post__in'=> $mypostids,
        'post_type'=>'school',
        'orderby'=>'title',
        'order'=>'asc'
    );

    $res = new WP_Query($args);

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

        global $post;

        $EstablishmentNumber = get_post_meta($post->ID,'EstablishmentNumber', true);

        $schl = array('id'=>$EstablishmentNumber, 'label'=>$post->post_title , 'value'=>$EstablishmentNumber );     
        $matchedSchools[] = $schl;


    endwhile;

3

दूसरे लूप से शीर्षक प्राप्त करें

$title = get_the_title();

और यदि आप चाहें तो $ शीर्षक चर का उपयोग करें।

<?php

global $post, $current_post_id, $title;

function filter_where($where = ''){

    global $title;
    $where .= "AND post_title = '$title'";
    return $where;

}
add_filter('posts_where', 'filter_where');

$query = new WP_Query(array('post_type' => 'sessions') );
if ( have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

    /* Loop here */

endwhile; endif; 

wp_reset_query(); ?>

यह कस्टम पोस्ट प्रकार और वर्डप्रेस 3.2.1 पर काम करता है
— ज़ाकिर साजिब

0

हाँ यह संभव है....

global $wpdb;

$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title like '%$str%' ");

$args = array('post__in'=$mypostids);

$res = WP_Query($arg);

चीयर्स राजीव - ने यह कोशिश की, लेकिन यह get_col के बाद अटक गया। मैंने उपरोक्त ^ ^ ^
— v3nt

0

ये उत्तर मुझे वर्डप्रेस हैक करने की कोशिश के रूप में लगते हैं।

स्टैक ओवरफ्लो पर एक ही प्रश्न का संदर्भ लें:

/programming/25761593/wp-query-with-post-title-like-something-and-category

यह काम करता है यदि आप शीर्षक द्वारा दिए गए शीर्षक से खोज क्वेरी करना चाहते हैं:

$the_query = new WP_Query( 
  array(
    'post_type' => 'watches',
    'posts_per_page' => 5,
    'orderby' => 'title',
    's' => 'my title'
  ) 
);

यह उदाहरण क्वेरी घड़ियों के नाम के बाद के प्रकार के लिए है और 's' (खोज शब्द) वह जगह है जहाँ आप क्वेरी पर अपने पोस्ट के शीर्षक देख सकते हैं


1
यह सामग्री की खोज करेगा
— मार्क कपलुन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.