torasan
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプのタグを出力表示できますか?どうも上記コードだと‘blog’ の方が上手くいきませんね。
カスタム投稿タイプが2つだとダメなのでしょうか?
コードの間違いがありましたらご指摘下さい。フォーラム: 使い方全般
返信が含まれるトピック: カスタム投稿タイプのタグを出力表示できますか?下記URLのコードを参考にfunctions.phpを編集したところ、
カスタム投稿タイプでも通常投稿と同じようにタグが利用でき、
タグクラウドも表示することが出来ました。投稿のカテゴリー・タグをカスタム投稿タイプと共通で使用する
https://teratail.com/questions/49994自分で書いたコードは以下の通りです。
カテゴリーは使用しないのでタグのところだけ使わせてもらいました。add_action( ‘init’, function () {
register_taxonomy( ‘post_tag’, [ ‘post’, ‘news’ ],
[
‘hierarchical’ => false,
‘query_var’ => ‘tag’,
]
);
register_taxonomy( ‘post_tag’, [ ‘post’, ‘blog’ ],
[
‘hierarchical’ => false,
‘query_var’ => ‘tag’,
]
);
} );add_action( ‘pre_get_posts’, function ( $query ) {
if ( is_admin() && ! $query->is_main_query() ) {
return;
}
if ( $query->is_category() || $query->is_tag() ) {
$query->set( ‘post_type’, [ ‘post’, ‘news’, ‘blog’ ] );
}
} );フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?自己解決致しました。
functions.phpの記事検索結果から固定ページを除外する設定を
修正したところ無事カスタム投稿も検索できるようになりました。旧バージョン
function SearchFilter($query) {
if(!is_admin()){
if ($query->is_search) {
$query->set(‘post_type’, ‘post’);}
return $query;}
else {
return false;}}
add_filter(‘pre_get_posts’,’SearchFilter’);新バージョン
function my_posy_search($search) {
if(is_search()) {
$search .= ” AND post_type = ‘post'”; }
return $search;}
add_filter(‘posts_search’, ‘my_posy_search’);多分これで良いのだと思います。
ご回答頂いた方に感謝いたします。ありがとうございました。フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?ishitaka様
お世話になります。
他のテーマではどうなのだろうかと「Twenty Seventeen」の
functions.phpに同じコードを書いて、search-news.php等の
ファイルを入れて検索したところいきなりエラー。。。でよく調べると参照サイトでコピーしたコードの一部(“や’)が
全角であることが判明。
コードの文字を全て半角にして見たらきれいに動作。
($post_typesはstring(3) “news”)とここまでは良かったのですが、元のテーマに変換したコード
を書いてみても「string(4) “post”」と表示。。。
そもそも全角混じりのコードを書いてもエラーを出さなかったわけで
自作のfunctions.phpに問題があるということなのでしょうか?
それともsearch.phpなどの検索ファイルに問題があるのでしょうか?フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?ishitaka様
お世話になります。
呼び出し元の検索フォームに
<input type=”hidden” name=”post_type” value=”カスタム投稿タイプ名”>
と記述してあります。
これで検索すると呼び出されるテンプレートがsearch.phpで、
var_dump( $post_types );で確認すると「string(4) “post”」と表示されます。フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?ishitaka様
お世話になります。
var_dump( $post_types );で確認したところ
「string(4) “post”」と表示されます。
カスタム投稿タイプ名が取得できていないようなのですが、
原因はお分かりになりますでしょうか?フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?ishitaka様
お世話になります。
検索フォームは参照サイトと同じように、
<form method=”get” action=”<?php bloginfo( ‘url’ ); ?>”>
<input type=”hidden” name=”post_type” value=”カスタム投稿タイプ名”>
<input name=”s” id=”s” type=”text” />
<input id=”submit” type=”submit” value=”検索” />
</form>
にしてあります。カスタム投稿タイプ名にはblogなりnewsなりを入れてみたのですが、
特定のカスタム投稿タイプのみに絞って検索することが出来ません。
search-blog.phpやsearch-news.phpを設置してもsearch.phpヘ
飛んでしまうため、ブログ全体の記事から検索結果を出力してしまいます。フォーラム: 使い方全般
返信が含まれるトピック: WordPressでカスタム投稿タイプ別に検索するには?CG様、返信有難うございます。
>search-{$post_type}.phpの箇所は、実際ではカスタム投稿名になっているのですよね。
この部分を例えばsearch-blog.phpにするとカスタム投稿名blogは検索できますが、
他のカスタム投稿(例:news)の検索が出来なくなってしまうので違うと思ったのですが…。以下のコードのどこかで条件分けをするのでしょうか?
カスタム投稿名がblogであればsearch-blog.phpを参照し、カスタム投稿名がnewsであればsearch-news.phpという具合に。add_filter(‘template_include’,’custom_search_template’);
function custom_search_template($template){
// 検索結果の時
if ( is_search() ) {
// 表示する投稿タイプを取得
$post_types = get_query_var(‘post_type’);
// search-{$post_type}.php の読み込みルールを追加
foreach ( (array) $post_types as $post_type )
$templates[] = “search-{$post_type}.php”;
$templates[] = ‘search.php’;
$template = get_query_template(‘search’,$templates);
}
return $template;
}