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

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

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

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

PHP

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

Q&A

解決済

2回答

408閲覧

WPにあるカテゴリにプラグインを利用せずカスタムフィールド(テキスト入力枠)を追加して、カテゴリページに表示させたい

moimoi

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/12/21 08:02

編集2017/12/21 12:13

カスタムフィールドでのテキスト呼び出しに困ってます。
どうかお力をお貸しいただけませんでしょか。よろしくお願いします。

■経緯
クライアントからWPにカテゴリ毎にオリジナルのテキストを入力できるカスタムフィールドが欲しいとのことで
私自身WPなどさわったことがなかったもので、下記記事を参考にカスタムフィールドを入れることに成功しましたが
カテゴリごとに表示するものだと思っていたものがカテゴリごとに入っているテキストがすべて一覧で表示されてしまいました。

▼希望
AのカテゴリーにはAの内容だけ、BのカテゴリにはBの内容だけを出せればと思っています。

▼参考記事
http://www.webopixel.net/wordpress/436.html

function.phpに下記内容を記載

/* カテゴリ説明文カスタムフィールド追加-2017-12-18 */ add_action ( 'edit_category_form_fields', 'extra_category_fields'); function extra_category_fields( $tag ) { $t_id = $tag->term_id; $cat_meta = get_option( "cat_$t_id"); ?> <tr class="form-field"> <th><label for="extra_text">カテゴリ説明文</label></th> <td><input type="text" name="Cat_meta[extra_text]" id="extra_text" size="25" value="<?php if(isset ( $cat_meta['extra_text'])) echo esc_html($cat_meta['extra_text']) ?>" /></td> </tr> <?php } add_action ( 'edited_term', 'save_extra_category_fileds'); function save_extra_category_fileds( $term_id ) { if ( isset( $_POST['Cat_meta'] ) ) { $t_id = $term_id; $cat_meta = get_option( "cat_$t_id"); $cat_keys = array_keys($_POST['Cat_meta']); foreach ($cat_keys as $key){ if (isset($_POST['Cat_meta'][$key])){ $cat_meta[$key] = $_POST['Cat_meta'][$key]; } } update_option( "cat_$t_id", $cat_meta ); } }

■解決しようかと記載されているコードで表示失敗
そしてこの記事に対して同じことをしようとした方がいらっしゃったので参考にしてみようと試みたのですが、
表示されませんでした。
[tah 2012-05-23 15:10 ]

初めまして、今こちらの記事で色々試させて頂いております。
現在の内容ではカテゴリーのカスタムフィールを値一覧をリスト表示していますが、
これを「個別表示」にはできますか?どうやっても登録したカテゴリーの全てが一覧で出てしまうので、
AのカテゴリーにはAの内容だけ、BのカテゴリにはBの内容だけを出せればいいな。と思っています。
もし何か方法あれば是非お願い致します。

このサイトの管理者さんが提案したコード

「archive.php」ページに表示したいということであれば下記でどうでしょうか。

$cat_data = get_option(‘cat_’.intval($cat)); echo esc_html($cat_data[‘extra_text’]);

▼私が上記内容をふまえて作成した出力コード

<?php if(is_category()) :?><div class="rss1bottom"> <?php $cat_data = get_option('cat_'.intval($cat));?> <?php echo esc_html($cat_data['extra_text']); ?> </div><?php endif; ?>

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

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

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

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

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

guest

回答2

0

古いWordPressでなければwp_termmetaが使えるので、そちらを使った方が私的にはいいように思います。

wordpress4.4から追加されたwp_termmetaを使って、カテゴリーにフィールドを足してみる
↑のサイトの説明で

// 後でわかりましたが、値が配列に入っているので[0]を指定してあげます。

とありますが、これは指定しなくても出力の際にget_term_meta()でtrueにしなければ配列になるのであえて[0]は要りません。

Wordpressで現在のカテゴリーページのIDを取得

get_term_meta()

投稿2017/12/21 08:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

moimoi

2017/12/21 12:11

ご回答ありがとうござます。上記内容も試しにやってみます。
guest

0

ベストアンサー

提示のコードのみで試してみましたが問題が再現できませんでした。
カテゴリ毎のカスタムフィールド値が正常に表示されますね。

確認したいただきたい点は、

  • $catに正常にカテゴリIDが入ってるか
  • データベースのwp_optionsテーブルに下記の形で挿入されているか
option_name => cat_* //*はカテゴリID option_value => a:1:{s:10:"extra_text";s:**:"テキスト";} //**はバイト数

投稿2017/12/21 08:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

moimoi

2017/12/21 10:20

素人過ぎてすいませんが書き方はこちらであってますでしょうか。 下記を入れるとエラーがおこり逆にサイトが表示しなくなりました。 <?php option_name => cat_* option_value => a:1:{s:10:"extra_text";s:**:"テキスト";} ?>
moimoi

2017/12/21 12:23

なんとかできました!でたってことは確かに動いてるってことか・・・。もう一度確認してみます! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問