Nu pot căuta tipul meu personalizat de postare?
Am adăugat un nou tip de postare personalizat numit: website_bookmarks
Intenționez să îl folosesc ca manager de bookmarkuri (voi exporta toate bookmarkurile din Google Chrome în tipul meu personalizat de postare) din următoarele motive:
- Pot căuta bookmarkuri ușor
- Pot adăuga etichete (php, web design, etc...)
- Pot adăuga descrieri pentru a explica mai bine bookmarkul
- Pot vizualiza și sorta cum doresc
- Pot accesa de oriunde online
- Pot împărtăși bookmarkurile cu cititorii mei (voi avea opțiunea de a marca un bookmark ca Privat sau Public astfel încât să fiu singurul care poate vedea cele Private)
- Sigur mai sunt și alte motive pentru care aceasta este o idee bună
Acum singura mea problemă până acum este partea de căutare. Nu pot face WordPress-ul meu (ultima versiune) să caute în tipul de postare website_bookmarks.
Mi-am modificat formularul de căutare cu un câmp ascuns
<input type="hidden" name="post_type" value="website_bookmarks" />
Astfel că în pagina mea de căutare în URI voi vedea...
www.mydomain.com/?s=termenulmeudecautare&post_type=website_bookmarks
Problema este că arată DOAR rezultatele căutării pentru postările mele obișnuite de blog și niciun rezultat din tipul meu personalizat de postare.
Dacă elimin s=termenulmeudecautare
din URI astfel încât acum este
www.mydomain.com/?post_type=website_bookmarks
atunci va afișa TOATE postările din tipul meu personalizat de postare. Acest lucru arată că website_bookmarks este numele corect pentru tipul meu de postare, doar partea de căutare nu funcționează corect. Va returna rezultatele căutării din postările obișnuite fără probleme, doar nu și din tipul de postare website_bookmarks.
Nu ar trebui să arate niciun rezultat pentru postările mele de blog și DOAR rezultate pentru tipul meu personalizat de postare website_bookmarks
Mă poate ajuta cineva? Nu pot înțelege de ce nu funcționează, codul pe care îl arăt mai sus pentru modificarea formularului de căutare, l-am găsit online de la alții care spuneau că a funcționat pentru blogurile lor pur și simplu schimbând formularul de căutare la ce am făcut eu mai sus.
Mai jos este și întregul meu fișier search.php
<?php get_header(); ?>
<?php if (have_posts()) : ?>
<h1 class="pagetitle"><?php printf( __("Rezultate căutare pentru <span>%s</span>", "vigilance"), get_search_query()); ?></h1>
<img class="archive-comment" src="<?php echo get_template_directory_uri(); ?>/images/comments-bubble-archive.gif" width="17" height="14" alt="Comentarii" title="Iconiță comentarii"/>
<div class="entries">
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php esc_attr( sprintf( __( 'Link permanent către %s', 'vigilance' ), the_title_attribute( 'echo=false' ) ) ); ?>"><span class="comments_number"><?php comments_number( '0', '1', '%', '' ); ?></span><span class="archdate"><?php the_time( __( 'M.j.y', 'vigilance' )); ?></span><?php the_title(); ?></a></li>
<?php endwhile; /* rewind or continue if all posts have been fetched */ ?>
</ul>
</div><!--end entries-->
<div class="navigation">
<div class="alignleft"><?php next_posts_link( __( '« Intrări mai vechi', 'vigilance' )); ?></div>
<div class="alignright"><?php previous_posts_link( __( 'Intrări mai noi »', 'vigilance' )); ?></div>
</div><!--end navigation-->
<?php else : ?>
<h1 class="pagetitle"><?php printf( __("Rezultate căutare pentru '%s'", "vigilance"), get_search_query()); ?></h1>
<div class="entry">
<p><?php printf( __( 'Ne pare rău, căutarea pentru "%s" nu a returnat niciun rezultat. Vă rugăm încercați din nou.', 'vigilance' ), get_search_query());?></p>
<?php get_search_form(); ?>
</div><!--end entry-->
<?php endif; ?>
</div><!--end content-->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Am încercat chiar și să folosesc acest cod în fișierul meu functions.php fără succes...
function mySearchFilter($query) {
$post_type = $_GET['post_type'];
if (!$post_type) {
$post_type = 'any';
}
if ($query->is_search) {
$query->set('post_type', $post_type);
};
return $query;
};
add_filter('pre_get_posts','mySearchFilter');
Mai jos este codul meu folosit pentru a crea tipul de postare website_bookmarks, puteți vedea că am activat query_var și publicly_queryable și am setat exclude_from_search la true și false pentru a-l testa în ambele moduri, fără succes
$bookmark_args = array(
'labels' => $bookmark_labels,
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'bookmark',
'with_front' => false),
'taxonomies' => array('bookmark_tags'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 4,
'can_export' => true,
'supports' => array(
'thumbnail', //thumbnail website
'excerpt', //descriere website
'title', //titlu website
'custom-fields',
'comments'
)
);
register_post_type('website_bookmarks', $bookmark_args);

ai încercat if (!isset($post_type))
sau if(empty($post_type))
?? De exemplu, aș încerca asta:
function mySearchFilter($query) {
$post_type = $_GET['post_type'];
if ($query->is_search) {
if (!empty($post_type)) {
$query->set('post_type', $post_type);
}
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');
EDIT: Iată exemplul meu de cod funcțional:
Iată CPT-ul meu folosit pentru testare:
add_action( 'init', 'register_cpt_website_bookmarks' );
function register_cpt_website_bookmarks() {
$labels = array(
'nume' => _x( 'Bookmark-uri', 'website_bookmarks' ),
'nume_singular' => _x( 'Bookmark', 'website_bookmarks' ),
'adauga_nou' => _x( 'Adaugă nou', 'website_bookmarks' ),
'adauga_nou_item' => _x( 'Adaugă Bookmark nou', 'website_bookmarks' ),
'editeaza_item' => _x( 'Editează Bookmark', 'website_bookmarks' ),
'item_nou' => _x( 'Bookmark nou', 'website_bookmarks' ),
'vezi_item' => _x( 'Vezi Bookmark', 'website_bookmarks' ),
'cauta_iteme' => _x( 'Caută Bookmark-uri', 'website_bookmarks' ),
'nu_a_fost_gasit' => _x( 'Nu s-au găsit bookmark-uri', 'website_bookmarks' ),
'nu_a_fost_gasit_in_gunoi' => _x( 'Nu s-au găsit bookmark-uri în Gunoi', 'website_bookmarks' ),
'item_parinte_colon' => _x( 'Bookmark Părinte:', 'website_bookmarks' ),
'nume_meniu' => _x( 'Bookmark-uri', 'website_bookmarks' ),
);
$args = array(
'etichete' => $labels,
'ierarhic' => false,
'suport' => array( 'titlu', 'editor' ),
'public' => true,
'arata_ui' => true,
'arata_in_meniu' => true,
'arata_in_meniuri_nav' => false,
'public_queryabil' => true,
'exclude_din_cautare' => false,
'are_arhiva' => true,
'query_var' => true,
'poate_fi_exportat' => true,
'rewrite' => true,
'tip_capabilitate' => 'post'
);
register_post_type( 'website_bookmarks', $args );
}
Link: [link removed] (caută "Bookmark" sau "Test" și dacă elimini "post_type" și cauți "test" vei obține mai multe rezultate)

Bună, da am încercat ceva similar și tocmai am testat asta, dar tot nu merge

Trebuie să fie ceva în neregulă cu tipul tău de postare. Am folosit codul de mai sus și l-am adaptat pentru bara mea de căutare și funcționează perfect. Am testat pe WP 3.3, nu sunt sigur ce versiune folosești tu.

Tocmai am încercat pe o altă temă și funcționează, însă nu merge pe tema mea, deci TREBUIE să fie ceva în tema mea care interferează și face să nu meargă. Mulțumesc pentru test, nu m-aș fi gândit niciodată să verific dacă problema e doar la o anumită temă sau nu

în primul rând, setarea
'exclude_from_search' => true,
va exclude CPT-ul din rezultatele căutării. Trebuie setat la false. CPT Generator de la Themergency vă va fi util pentru a scrie rapid CPT-urile.
Pentru a include CPT-uri în arhive sau căutări, de obicei folosesc acest cod, care este ușor diferit de al tău:
function include_custom_post_types( $query ) {
$custom_post_type = get_query_var( 'post_type' );
if ( is_archive() ) {
if ( empty( $custom_post_type ) ) $query->set( 'post_type' , get_post_types() );
}
if ( is_search() ) {
if ( empty( $custom_post_type ) ) {
$query->set( 'post_type' , array(
'post', 'page', 'yourcpt'
)
);
}
}
return $query;
}
add_filter( 'pre_get_posts' , 'include_custom_post_types' );
Sper că acest lucru funcționează pentru tine.

Bună, am schimbat la 'exclude_from_search' => true,
doar pentru a testa, acum este setat din nou la false dar asta nu face nicio diferență în problema mea. Mulțumesc pentru link-ul către CPT Generator, este util! Am încercat codul tău de mai sus, am schimbat 'post', 'page', 'yourcpt'
în 'post', 'page', 'website_bookmarks'
totuși, rezultatele mele de căutare încă nu returnează niciun rezultat din CPT-ul meu website_bookmarks, mi se pare foarte ciudat că nimic nu funcționează
