質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1176閲覧

wp_queryのループ終了後に値を使いたい

masao12

総合スコア13

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/10/28 05:40

wordpressのwp_queryについての質問です。

http://localhost:8888/hoge/?field_name="フィールドの名前"
のようなURLで、コンテンツの表示非表示をおこないたいと考えているのですが、
下記のコードですと、ループの終了後の$titleのURLでしか判定ができません。
「ループの終了後に複数のフィールドの値を持ち出す?」といったような事は可能なのでしょうか?
よろしくお願いいたします。

php

1<?php 2 $paged = (get_query_var('paged')) ? get_query_var( 'paged' ) : 1; 3 $wp_query1 = new WP_Query(); 4 $param1 = array( 5 'posts_per_page' => '-1', //表示件数。-1なら全件表示 6 'post_type' => 'industry', //カスタム投稿タイプの名称 7 'post_status' => 'publish', //取得するステータス。 8 'orderby' => 'ID', //ID順に並び替え 9 'orderby' => 'date', 10 'meta_compare' => '=', 11 ); 12 $wp_query1->query($param1); 13 if($wp_query1->have_posts()): while($wp_query1->have_posts()) : $wp_query1->the_post(); 14 $display = get_field('display_control');//表示非表示を管理画面で操作する 15 $title = get_field('main_title');//main_titleというフィールドの値の取得 16 ;?> 17 <?php if($display) { ;?> 18 <li class="item"> 19 <a class="link" href="/hoge/?field_name=<?php echo $title ?>"> 20 <?php echo the_title(); ?> 21 </a> 22 </li> 23 <?php } ;?> 24 <?php endwhile; endif; ?>//ループの終了 25 </ul> 26 </div> 27//==================== ここから 28 <?php $url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];?> 29 30 <?php if(strstr($url,$title) == true): ?> 31 //urlが$url + $titleのパターンの場合を表示をさせたい 32 <?php else: ?> 33 //上記以外の場合 34 <?php endif; ?> 35

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/10/28 14:52

具体的にどのように使用するのでしょうか。コードに書かれている例で言うと、$wp_query1に複数の記事が取得されている場合に全ての$titleが一致する必要があるのでしょうか。
masao12

2018/10/28 21:01

urlのfieldnameで各フィールド毎($title)の記事の表示非表示をしようとしています。わかりづらくてすみません。
guest

回答2

0

ベストアンサー

「ループの終了後に複数のフィールドの値を持ち出す?」といったような事は可能なのでしょうか?

外にもちだせば可能かと思いますが、そういうことではない?

php

1 $all_titles = []; //これ 2 if($wp_query1->have_posts()): while($wp_query1->have_posts()) : $wp_query1->the_post(); 3 $display = get_field('display_control');//表示非表示を管理画面で操作する 4 $title = get_field('main_title');//main_titleというフィールドの値の取得 5 $all_titles[] = $title; //これ 6 ;?>

こういった取り出しをしておいて、

php

1<?php foreach($all_titles as $each_titles): //これ?> 2 <?php if(strstr($url,$each_titles) == true): ?> 3 //urlが$url + $titleのパターンの場合を表示をさせたい 4 <?php else: ?> 5 //上記以外の場合 6 <?php endif; ?> 7<?php endforeach; //これ?>

こういうことですかね。
ifの書き方は質問者様が正しいという前提です(最後でしかできないんですか==最後のtitleについては正しく動作している、という前提)

//urlが$url + $titleのパターンの場合を表示をさせたい

↑の意図とページ構造を読み切れてないので、もしかしたら全体の処理をもっと最適化できるのかもしれません(同じ変数をわざわざ2週するのは変な気がするため)

投稿2018/10/29 01:46

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masao12

2018/10/29 03:17

おっしゃっている通りです。大変助かりました。ありがとうございます。
guest

0

foreachで連想配列の値を取り出せばいいと思います

php

1<?php foreach($param1 as $key => $value): ?> 2 echo $value . "<br>\n"; 3<?php endforeach; ?>

投稿2018/10/28 07:54

akihiro3

総合スコア955

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masao12

2018/10/28 09:13

ご回答ありがとうございます。具体的にどのように使用すればよろしいでしょうか。
akihiro3

2018/10/28 09:19

あれ?できなかったですか? $param1は配列ですよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問