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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

Q&A

2回答

2223閲覧

PHPの中にPHP  echoで吐き出した文字列(URL)を反映させたい。

RPG91961528

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

0グッド

0クリップ

投稿2020/08/28 10:28

前提・実現したいこと

ワードプレスのカスタマイズをしています。

ワードプレスのカスタムフィールドに入力したURLをこのような形で吐き出しています。

<?php echo get_post_meta($post->ID, 'link_url', true); ?>

ここには、カスタムフィールドに入力した任意の https://teratail.com/ などのようなリンク先のURLを吐き出します。

これ単体であれば問題なく文字列の吐き出しはできました。

仮に
<a href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" ></a>
のような形でリンクとして吐き出すこともできました。

次に、選択項目がつくってあって、選択によって以下のように出力し、そのなかに上記のURLを入れたいのですが
うまくいきません。

以下の「ああああ」のところに上記①を反映させたいのです。

<?php if ($semi_link_type == 'semi_btx1') { echo '<a class="semi2_link_bt" href="ああああ" target="_blank">セミナーの様子</a>'; } else if ($semi_link_type == 'semi_btx2') { echo '<a class="semi2_link_bt" href="ああああ" target="_blank">セミナーの様子2</a>'; } else if ($semi_link_type == 'semi_btx3') { echo '<a class="semi2_link_bt" href="ああああ" target="_blank">セミナーの様子3</a>'; } ?>

試したこと

<?php if ($semi_link_type == 'semi_btx1') { echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子</a>';

} else if ($semi_link_type == 'semi_btx2') {
echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子2</a>';
} else if ($semi_link_type == 'semi_btx3') {
echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子3</a>';
}
?>

php の中に php を書いているからだと思うのですが、うまくいきません。

ああああ の中に、echo で吐き出したURLの文字列を反映させるには、どのようにしたらよろしいでしょうか?

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

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

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

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

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

guest

回答2

0

PHP: PHP タグ - Manual

PHP はファイルを解析して開始タグと終了タグ (<?php と ?>) を探します。 タグが見つかると、PHP はコードの実行を開始したり終了したりします。 このような仕組みにより、PHP を他のあらゆる形式のドキュメント中に 埋め込むことができるのです。つまり、開始タグと終了タグで囲まれている 箇所以外のすべての部分は、PHP パーサに無視されます。

このPHPの基本的な動作を理解していれば、
<?php?> の内側にさらに <?php?> を置くようなことはダメなのだとわかるはずです。

<?php?> の内側では、
普通に変数などに文字列連結しておいてechoするなどすればよいです。

投稿2020/08/28 12:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

いったん変数に吐き出して埋め込むか、文字列の連結をしてください
3箇所同じものをつかっているなら前者のほうがらくかも

投稿2020/08/28 10:36

編集2020/08/28 10:37
yambejp

総合スコア116734

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

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

yambejp

2020/08/28 10:39

アンカーの中身だけかわるなら変数で処理すればいいかも
yambejp

2020/08/28 11:38 編集

$href=get_post_meta($post->ID, 'semi_link_url', true); $list=['semi_btx1'=>'セミナーの様子','semi_btx2'=>'セミナーの様子2','semi_btx3'=>'セミナーの様子3']; if (in_array($semi_link_type,array_keys($list))) { echo "<a class=\"semi2_link_bt\" href=\"{$href}\" target=\"_blank\">{$list[$semi_link_type]}</a>"; }
RPG91961528

2020/08/28 10:49

回答ありがとうございます。 すみません。 これをみても何をどうしたら良いかわからない素人で、、、 これをどこかに記述する ということでしょうか?
yambejp

2020/08/28 11:12

例示の全部を書き換えたものです。
RPG91961528

2020/08/28 11:33

<?php if ($semi_link_type == 'semi_btx1') { echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子</a>'; } else if ($semi_link_type == 'semi_btx2') { echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子2</a>'; } else if ($semi_link_type == 'semi_btx3') { echo '<a class="semi2_link_bt" href="<?php echo get_post_meta($post->ID, 'semi_link_url', true); ?>" target="_blank">セミナーの様子3</a>'; } ?> が <?php $href=get_post_meta($post->ID, 'semi_link_url', true); $list=['semi_btx1'=>'セミナーの様子','semi_btx2'=>'セミナーの様子2','semi_btx3'=>'セミナーの様子3']; if (in_array($semi_link_type,array_keys($list)) { echo "<a class=\"semi2_link_bt\" href=\"{$href}\" target=\"_blank\">{$list[$semi_link_type]}</a>"; } ?> こうなる ということであっておりますでしょうか?
yambejp

2020/08/28 11:39

ごめんなさい、一箇所書き換えました。ifのカッコの数があってませんでした
RPG91961528

2020/08/28 11:53

すごい、、、できました。魔法みたいです。 もう1点甘えさせていただけないでしょうか? 私のサンプルが間違っていたのですが <a class="semi2_link_bt" href=" という、Aタグの冒頭部分 実は それぞれ違うクラスを付与しておりました。 <a class="semi2_link_bt1" <a class="semi2_link_bt2" <a class="semi2_link_bt3" のような感じです。 それぞれ出力されたボタンに合わせて色を変えたりしていました。 このようにするにはどうしたらよろしいでしょうか ?
RPG91961528

2020/08/28 11:56

たびたび甘えて申し訳ありません、、、 この3パターンのうちの1つは、ワードプレスの記事に直接飛ぶ <?php the_permalink(); ?> を入れっぱなしにしておきたいと思っております。
yambejp

2020/08/28 12:08

$semi_link_typeに入っているsemi_btxのケツの数値をクラスにつけるのですね? <?php the_permalink(); ?> を入れっぱなし・・・ちょっと理解できません。 $href=get_post_meta($post->ID, 'semi_link_url', true); $list=['semi_btx1'=>'セミナーの様子','semi_btx2'=>'セミナーの様子2','semi_btx3'=>'セミナーの様子3']; if (in_array($semi_link_type,array_keys($list))){ $num=substr($semi_link_type,-1); echo "<a class=\"semi2_link_bt{$num}\" href=\"{$href}\" target=\"_blank\">{$list[$semi_link_type]}</a>"; }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問