カスタム分類にカスタムフィールドを追加したい
-
とあるサイトを参考に、カスタム分類にカスタムフィールドを追加するということを行いました。
まず実施したのが下記を「functions.php」に記載。// カスタム分類にカスタムフィールドを追加 add_action ( 'タクソノミー名_edit_form_fields', 'extra_taxonomy_fields'); function extra_taxonomy_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><textarea 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']) ?>" rows="3" /></textarea></td> </tr> <?php } // カスタム分類にカスタムフィールド追加して保存するためのコード add_action ( 'edited_term', 'save_extra_taxonomy_fileds'); function save_extra_taxonomy_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 ); } }
これでカスタムフィールドは表示されました。
そしてこれを使って固定ページで作ったページ内に表示させたいと思い、参考にしたサイトに記載されていたソースを基に下記を記述しました。
<?php $categories = get_terms('タクソノミー名'); foreach($categories as $category){ $cat_data = get_option('cat_'.intval($category->term_id)); echo esc_html($cat_data['extra_text']); } ?>
しかし、カスタムフィールドのテキストは取得してくれたのですが、全てのタームのテキストを表示してしまいます。
所属するタームのテキストだけを拾ってきたいのですが、どう修正すればいいのかが分からず困っております。そしてこれはあとで気づいたのですが、管理画面のカスタムフィールドを確認すると、空になっていました。
でもページには入力したテキストが表示されていたので、保存はされているようなのですが、なぜ空になってしまうのかの原因が分かりかねております。「functions.php」の「カスタム分類にカスタムフィールド追加して保存するためのコード」のどこかが間違っているのかどうかも分かりかねております。お分かりになる方がいらっしゃいましたら、ぜひともご教授いただきたいです。
よろしくお願いいたします。
4件の返信を表示中 - 1 - 4件目 (全4件中)
4件の返信を表示中 - 1 - 4件目 (全4件中)
- トピック「カスタム分類にカスタムフィールドを追加したい」には新たに返信することはできません。