2
私は、ページやカスタムポストタイプのメタデータも検索できるように、デフォルトのワードプレス検索を構築して強化しようとしています。カスタムフィールドのタイトルが出力されていないことを除いて、素晴らしい動作します。私はprint_r($custom_fields);
を実行し、値が格納されていることを示します。私は欠けているものだけを失っていますが、最初の値をスキップする2つのforeachループと関係していると思いますか?ここでポストメタタイトルが見つかりません
は何が起こっているかを示す画像とコードです:どのようにParkmerced(最初の段落)を参照してください:
結果検索の場合に検索されています結果が検索の場合:まとめました(第2段落):
のfunctions.php(検索する関連機能)
function cf_search_join($join) {
global $wpdb;
if (is_search()) {
$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
}
return $join;
}
add_filter('posts_join', 'cf_search_join');
function cf_search_where($where) {
global $pagenow, $wpdb;
if (is_search()) {
$where = preg_replace(
"/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where);
}
return $where;
}
add_filter('posts_where', 'cf_search_where');
function cf_search_distinct($where) {
global $wpdb;
if (is_search()) {
return "DISTINCT";
}
return $where;
}
add_filter('posts_distinct', 'cf_search_distinct');
search.php
<?php if (have_posts()) : ?>
<section class="search-results">
<p class='show-results'><?php printf(__('Showing search results for: <span>%s', 'parkmerced-vision'), get_search_query()); ?></span></p>
<?php while (have_posts()) : the_post(); ?>
<!-- something found -->
<div class="result animated fade-in-up delay-<?php echo $i; ?>">
<a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4></a>
<?php
the_excerpt();
$searched = get_search_query();
$custom_fields = get_post_custom();
foreach($custom_fields as $field_key => $field_values) {
foreach($field_values as $key => $value) {
if(stripos($value, $searched)) {
$in = $value;
$search = $searched;
$replace = '<strong>' . $searched . '</strong>';
$out = str_ireplace($search, $replace, $in);
echo '<p>' . $out . '</p>';
}
}
}
?>
</div>
<?php endwhile; else : ?>
<!-- nothing found -->
<h2>Nothing Found</h2>
<div class="alert alert-info">
<p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p>
</div>
<a class="search-back btn" href="<?php echo home_url('/'); ?>/faq">return to faq</a>
<?php endif; ?>
</section>
<?php get_footer(); ?>
'$ field_values'は繰り返しごとに配列ですか? – kindisch
@kindischはいそうです。 – alexmattorr
@kindischこれは、特定の配列から出力される値です。[title] => Array([0] => Parkmercedの仕組みを参照) – alexmattorr