query_post după titlu?
Este posibil să creezi o buclă de postări folosind WP_Query sau query_posts folosind titlul?
adică
$args = array('post_title'='LIKE '.$str.'% ');
$res = WP_Query($arg);
// bucla...
// încerc acum asta...
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title like 'Abb%' ");
echo count($mypostids).", "; // funcționează dar nu pot afișa array-ul de ID-uri pentru următorii parametri?
$args = array(
'post__in'=> $mypostids
);
$res = WP_Query($args);
while( $res->have_posts() ) : $res->the_post(); ...

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;
}
?>
Apoi:
$args = array(
'post_title_like' => $str
);
$res = new WP_Query($args);

Funcționează excelent, cu excepția celui de-al doilea argument (referința $wp_query
), care nu pare să facă parte din funcția de callback a filtrului (vezi http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where) și va genera o eroare.

de fapt, codul este corect așa cum este, cel puțin în WP 4.1.1. Codex-ul este cel care omite al doilea argument, așa că dacă declari 2 argumente în add_filter
ca în exemplu, funcționează perfect. Un alt avantaj al acestei soluții este că funcționează pentru post types personalizate.

Aceasta ar trebui să fie răspunsul acceptat deoarece arată cum se poate face folosind funcțiile încorporate în WordPress și nu folosind interogări SQL personalizate.

se pare că primul %
lipsește aici. Chiar după LIKE \'
. L-am adăugat și a început să funcționeze (4.2.4)

Da, lipsește primul %
, l-am adăugat și eu și funcționează :) (poate ar trebui editat răspunsul?)

am reușit să fac asta să funcționeze cu ajutorul acestui post în final. Mulțumesc băieți;
$finalArgs = array (
'posts_per_page'=>5, // Numărul de postări pe pagină
'order' => 'ASC', // Ordinea crescătoare
'post_type' => 'school' // Tipul de postare
);
// Crează o nouă instanță
$searchSchools = new WP_Query( $finalArgs );
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '".$str."%' ");
$args = array(
'post__in'=> $mypostids, // ID-urile postărilor
'post_type'=>'school', // Tipul de postare
'orderby'=>'title', // Sortează după titlu
'order'=>'asc' // Ordine crescătoare
);
$res = new WP_Query($args);
while( $res->have_posts() ) : $res->the_post();
global $post;
$EstablishmentNumber = get_post_meta($post->ID,'EstablishmentNumber', true); // Obține numărul instituției
$schl = array('id'=>$EstablishmentNumber, 'label'=>$post->post_title , 'value'=>$EstablishmentNumber );
$matchedSchools[] = $schl;
endwhile;

Obține titlul dintr-o altă buclă
$title = get_the_title();
și folosește variabila $title dacă dorești.
<?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();
/* Bucla aici */
endwhile; endif;
wp_reset_query(); ?>

Aceste răspunsuri mi se par ca încercări de a hack-ui WordPress.
Consultați aceeași întrebare pe Stack Overflow:
https://stackoverflow.com/questions/25761593/wp-query-with-post-title-like-something-and-category
Această metodă funcționează dacă doriți să faceți o interogare de căutare după titlu, sortată după titlu:
$the_query = new WP_Query(
array(
'post_type' => 'watches',
'posts_per_page' => 5,
'orderby' => 'title',
's' => 'my title'
)
);
Acest exemplu de interogare este pentru un tip de postare numit "watches", iar parametrul 's' (termenul de căutare) este locul unde puteți specifica termenul pentru căutarea în titlurile postărilor.
