2017-06-01 22 views
0

検索フォームの結果をページに表示する際に問題が発生しています。カスタム検索フォームからデータを取得し、ページ(ワードプレス)に結果を表示

私はheader.phpの中でカスタム検索フォームを持っている:ユーザーがフォームを送信すると

<form action="<?php echo site_url('/pagesearch/')?>" method="get" id="adminbarsearch"> 
    <input type="search" id="place" name="mydata" /> 
    <input type="submit" class="adminbar-button" value="Rechercher"/>*/?> 
</form> 

、私はデータを取得し、それを修正し、私のfunctions.phpでこのコードを:

if ((isset($_GET['mydata'])) && (!empty($_GET['mydata']))){ 
    $q = sanitize_text_field($_GET['mydata']);  
    $search_posts_id = array(); 

    $search_args = array(
      's' => $q, 
      'fields' => array('ids', 'post_type'), 
      'post_type' => 'my_custom_posttype' 
    ); 
    $search_query = new WP_Query($search_args); 

    if ($search_query->have_posts()) : 
      $search_posts_id = array_unique(wp_list_pluck($search_query->posts, 'post_title', 'id')); 
      $search_posts_id = implode(',', $search_posts_id); 
    else : 
      $search_posts_id = implode(',', $search_posts_id); 
    endif; 
    wp_reset_postdata(); 

    echo $search_posts_id; 

問題は、私のウェブサイトの "pagesearch"ページに$search_posts_idという結果を表示したいということです。

上記のコードを使用すると、ページに表示されますが、ヘッダーとすべての前に表示され、コンテンツにはヘッダーとフッターの間に表示されません。

このデータをコンテンツに正しく挿入する方法がわかりません。

ありがとうございました!

答えて

0

これは、あなたのfunctions.phpファイルからエコーしているからです。これは、テーマのヘッダーとコンテンツがレンダリングされる前に実行されるため、他のものより先に出力されます。

おそらく、the_content()呼び出しの前にこのコードをpage.php(またはそれに挿入するテンプレート)内に配置するか、これを表示するカスタムショートコードを作成するなど、別のアプローチをとる必要がありますあなたが望む場所にコンテンツ

これらの結果を具体的に表示したい場所についてさらに情報を提供することができれば、さらにサポートできます。がんばろう!

+1

ありがとう、私は前にそれを試していたし、それは動作しませんでした、私はもう一度試して、それは完璧に動作します。私は最初に間違いをしていたはずです。 – Mar

関連する問題