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

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

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

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

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

PHP

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1303閲覧

タクソノミーを配列へ入れて、if文をひとまとめにして、任意の場所で呼び出したい。

seiya_web

総合スコア7

CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

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

PHP

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/08/22 14:47

編集2019/08/22 14:54

前提・実現したいこと

wordpressの投稿一覧でループの中で各タクソノミーを配列へ入れて、
該当箇所でURLとして出力したい。

phpのループの中で各タクソノミーを取得しているのですが、同じif文を2回書いています。
これを配列に入れて、1つにまとめたいです。下記は現在のソースコードです。

php

1<?php 2 $args = array ( 3 'paged' => $paged, 4 'post_type' => 'post', 5 'posts_per_page' => 12, 6 ); 7 $myposts = get_posts( $args ); 8 foreach( $myposts as $post ): 9 setup_postdata($post); 10 11 if ($color = get_the_terms($post->ID, 'color')) { 12 foreach ( $color as $term ) { 13 $color_slug = $term -> slug; 14 } 15 } 16 if ($sub_color = get_the_terms($post->ID, 'sub_color')) { 17 foreach ( $sub_color as $term ) { 18 $sub_color_slug = $term -> slug; 19 } 20 } 21 ?>

試したソースコード

php

1<?php 2 $args = array ( 3 'paged' => $paged, 4 'post_type' => 'post', 5 'posts_per_page' => 12, 6 ); 7 $myposts = get_posts( $args ); 8 foreach( $myposts as $post ): 9 setup_postdata($post); 10 11if ($term_array = get_the_terms($post->ID, array('color','sub_color'))) { 12 foreach ( $term_array as $term ) { 13 $color_term = $term -> slug; 14 } 15} 16?> 17 18<a href="<?php echo get_term_link($color_term,'color'); ?>"><div class="taxonomy <?php echo esc_html($color_term,'color');?>"><?php echo esc_html($color_term,'color');?></div></a> 19<a href="<?php echo get_term_link($color_term,'sub_color'); ?>"><div class="taxonomy <?php echo esc_html($color_term,'sub_color');?>"><?php echo esc_html($color_term,'sub_color');?></div></a>

実現したいこと

配列に入れたあと、該当箇所でスラッグ名を変えるだけでリンク先やスラッグ名を呼び出したい。
また配列以外でも、より効率のいい方法があればそちらを知りたいです。
私の中でひとまとめにする方法が配列しか思いついていないため、上記ソースコードになっております。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

WordPress 5.2.2

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHP

1function echo_term_link( $tax ) { 2 global $post; 3 $term_array = get_the_terms( $post->ID, $tax ); 4 if ( !$term_array ) return; 5 $url = get_term_link( $term_array[ 0 ]->slug, $tax ); 6 echo '<a href="'.$url.'"><div class="taxonomy '.$term_array[ 0 ]->slug.'">'.$term_array[ 0 ]->slug.'</div></a>'; 7} 8 $args = array ( 9 'paged' => $paged, 10 'post_type' => 'post', 11 'posts_per_page' => 12, 12 ); 13 $myposts = get_posts( $args ); 14 foreach( $myposts as $post ): 15 setup_postdata($post); 16 echo_term_link( 'color' ); 17 echo_term_link( 'sub_color' );

投稿2019/08/22 15:25

kei344

総合スコア69400

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

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

seiya_web

2019/08/24 03:04

素人にも分かりやすく、拡張性があるコードを教えてくださりありがとうございます!!実装できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問