web-dev-qa-db-ja.com

すべてのメタが添付されたカスタム投稿タイプを検索しますか?

現在、特定の投稿タイプを検索するための検索ボックスがあります。すべての標準のcptコンテンツ、タグ、および関連するメタデータに対してクエリをチェックすることになっています。 CPTの投稿に関連するすべてのデータを検索できるようにコードを変更する方法を考えています。

これが私が現在持っているものです(現在は 'memberFirstName'だけを検索します):

<?php
/**
 * @package WordPress
 * @subpackage themename
 */

get_header(); 
$search = get_search_query(); ?>
<div id="main">
        <div id="primary" role="region">
            <div id="content">

                    <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'themename' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
                        <?php
                            // LOOP ARGUMENTS
                            $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                            $args = array( 'post_type' => 'cbd_team_members', 'posts_per_page' => -1, 'paged' => $paged, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => array(
                                    array(
                                        'key' => 'memberFirstName',
                                        'value' => $search,
                                        'compare' => 'LIKE'
                                        ),
                                    )); // -1 Shows ALL Posts
                            $loop = new WP_Query( $args );
                            while ( $loop->have_posts() ) : $loop->the_post();

                            // CUSTOM CONTENT
                            $memberFirstName = get_post_meta($post->ID,"memberFirstName",true);
                            $memberPosition = get_post_meta($post->ID,"memberPosition",true);
                            $memberPhone = get_post_meta($post->ID,"memberPhone",true);
                            $memberEmail = get_post_meta($post->ID,"memberEmail",true);
                            $thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'thumbnail_name');
                            $imgURL = (isset($thumb[0]) ? $thumb[0] : get_template_directory_uri() . "/images/member_placeholder.jpg");

                            $postID = get_the_ID();
                            $terms = get_the_terms( $postID, 'service-type' );
                            foreach($terms as $term) {
                                if($term->parent == 14 ) {
                                    $memberDivision = $term->name;
                                }
                                if($term->parent == 8 ) {
                                    $memberDivision = $term->name;
                                }
                                if($term->parent == 3 ) {
                                    $memberCity = $term->name;
                                }
                            }
                        ?>

                            <div class="memberListing">
                                <img src="<?php echo get_template_directory_uri(); ?>/thumb.php?src=<?php echo urlencode($imgURL); ?>&h=79&w=79&zc=2">
                                <div class="memberInfo">

                                    <strong><?php echo $memberFirstName; ?>&nbsp;<?php the_title(); ?></strong>, <span><?php echo $memberPosition; ?></span><br />
                                    <?php echo $memberDivision; ?>, <?php echo $memberCity; ?>
                                    <div class="right">
                                        <?php echo $memberPhone; ?>
                                        <a href="mailto:<?php echo $memberEmail; ?>">Email</a>
                                    </div>
                                </div>
                            </div>          

                        <?php /* END WHILE AND RESET QUERY */ endwhile; wp_reset_query(); ?>
                        <div class="pagination">
                        <?php $total_pages = $loop->max_num_pages;

                            if ($total_pages > 1){

                                $current_page = max(1, get_query_var('paged'));

                                echo paginate_links(array(
                                'base' => get_pagenum_link(1) . '%_%',
                                'format' => '/page/%#%',
                                'current' => $current_page,
                                'total' => $total_pages,
                            ));
                        }   ?>
                        </div>
            </div><!-- #content -->

            <div id="secondary" class="widget-area">
                <?php if ( dynamic_sidebar('team-sidebar') ) : else : ?><?php endif; ?>
            </div>
        </div><!-- #primary -->


<?php get_footer(); ?>
3
Austin Biggs

私はこの質問を試みました、そして、それはかなりうまくいっているようでした。うまくいけば、それもあなたを助けます!

$args = array(
    'post_type' => 'cbd_team_members', 
    'posts_per_page' => -1,
    'paged' => $paged, 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'meta_value' => $search,
    'meta_compare' => "like"
);
$loop = new WP_Query( $args );
1
Jacob Raccuia