###前提
WordPressで「wp_term_taxonomy」のテーブルに、「ranking」というフィールドを作成しました。
(「discrioption」と同じように「LONGTEXT」です。)
実現したいこと
この「ranking」情報を「manage_edit-animal_columns」のフックを使い管理画面に表示したいです。(animalはターム名です。)
しかし次のエラーになります。
発生している問題・エラーメッセージ
実際に140のタームは存在していますが、このようなエラーになってしまいます。
WordPress データベースエラー: [Unknown column 'ID' in 'where clause'] SELECT ranking FROM wp_term_taxonomy WHERE ID=140 array(0) { }
該当のソースコード
まず管理画面に表示させるために、次のコードをfunctions.phpに書いており、IDもrankingも、項目と内容が表示されます。
今回はrankingについて、「●」ではなく「データベースのrankingの情報」を出力したいというのが目的です。
// IDとrankingの項目を表示 add_filter('manage_edit-animal_columns' , 'add_term_columns'); function add_term_columns( $columns ) { $columns['id'] = 'ID'; $columns['ranking'] = 'ranking'; return $columns; } // 追加された項目の内容を表示 add_filter( 'manage_animal_custom_column', 'add_term_custom_column', 10, 3 ); function add_term_custom_column( $content, $column_name, $term_id ) { if ( 'id' === $column_name ) { // きちんとIDが表示されます。 $content = $term_id; } if ( 'ranking' === $column_name ) { // ここで「●」ではなく「データベースのrankingの情報」を出力したいです。 $content = '●'; } return $content; }
試したこと
「●」ではなく「データベースのrankingの情報」を出力したいので、次のコードを試しています。
上の「add_term_custom_column」では第三引数で$term_idが取得できるので、それを使っています。しかしこれが先述のエラーを出します。
php
1$term_id = 140; 2$results = $wpdb->get_results("SELECT ranking FROM wp_term_taxonomy WHERE ID={$term_id}"); 3var_dump($results)
ちなみに上のコードは下記を参考にし、下記はきちんと投稿タイトルが出力されます。
php
1$post_id = 379; 2$results = $wpdb->get_results("SELECT post_title FROM wp_posts WHERE ID={$post_id}"); 3var_dump($results);
投稿タイトルは取得できるのに、なぜrankingは取得できなくなるのでしょうか?
ご指導よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
WordPress 5.2.2
PHP 7.2.13
MySQL 4.7.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/10 16:50
2019/08/10 17:27