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.