WordPressのプラグインを開発

WordPressで業績リストを管理するためのプラグイン(MyBibliography)をつくる

  • 論文は個別に記事として投稿する。
  • 業績一覧を表示したいページではショートコードとしてプラグインの機能を呼び出す。プラグインがWordPressのデータベースを検索して、一覧にして返す。
  • WordPressのダッシュボードのプラグインの設定で、書式や一括登録をできるようにする。

作成するファイル

wp-content/plugins 以下にプラグインごとのディレクトリをつくって、その中にプラグインのPHPプログラムを書く。

$ cd wp-content/plugins/
$ mkdir my-bibliography
$ vim my-bibliography/my-bibliography.php

プラグインの書き方

WordPressはpluginsフォルダにあるPHPファイルを読み込んで、ダッシュボードのプラグインに表示する。
その際、PHPファイルのコメントを読んで、プラグインの説明として表示する。

my-bibliography.phpのコメント部分
/*
Plugin Name: MyBibliography
Plugin URI:
Description: 文献リストを作成する
Version: 1.0.0
Author: Takamasa Suzuki
Author URI: http://biochemistry.isc.chubu.ac.jp/labo/suzuki/
License: CC license
*/

上記の入力が下記のように表示されます。

プラグインとして動作させたいPHPのコードはクラスとしてまとめます。

class MyBibliography {
}

プラグインの登録

プラグインが有効化されるとWordPressがプラグインのPHPファイルをスクリプトとして実行します。
そのときにプラグインのクラスが初期化されるように以下のコードをいれます。

add_action('init', 'MyBibliography::init');

プラグインのクラスには以下のメソッドを追加します。

static function init() {
    return new self();
}
function __construct() {
}

プラグインメニューの登録


add_menu_page と add_submenu_page 関数を実行すると、ダッシュボードのの左にメニューが追加されます。

function add_plugin_menu() {
        add_menu_page(
            '文献リスト',   /*  ページタイトル*/
            '文献リスト読み込み',   /* メニュータイトル */
            'manage_options',   /* 権限 */
            'my-bibliography',  /* ページを開いたときのURL */
            [$this, 'show_config_form'],    /* メニューに紐づく画面を描画するcallback関数 */
            'dashicons-format-gallery', /* アイコン see: https://developer.wordpress.org/resource/dashicons/#awards */
            99  /* 表示位置のオフセット */
        );
        add_submenu_page(
            'my-bibliography',  /* 親メニューのslug */
            __CLASS__ . '設定', //  <title>に設定される
            __CLASS__ . '設定', //  wpのメニューに表示される
            'manage_options',
            'my-bibliography-config',
            [$this, 'show_config_form']
        );
        add_submenu_page(
            'my-bibliography',  /* 親メニューのslug */
            __CLASS__ . ' import',  //  <title>に設定される
            __CLASS__ . ' import',  //  wpのメニューに表示される
            'manage_options',
            'my-bibliography-import',
            [$this, 'show_import_form']
        );
    }

ショートコードの登録

プラグインが有効にされたときにショートコードが使えるようにしたいので、以下をMyBibliographyの__constructメソッドに追加する。


add_shortcode('MyBiblio', [$this, 'show_bibliography']);

add_shortcode関数の引数は、ショートコードでの名前、呼び出す関数(上記ではオブジェクトのshow_bibliographyメソッドが呼ばれる)、となっている。

業績一覧にショートコードを埋め込む

Identification of Abscisic Acid-Dependent Phosphorylated Basic Helix-Loop-Helix Transcription Factors in Guard Cells of Vicia faba by Mass Spectrometry. Hayashi, Y., Takahashi, Y., Fukatsu, K., Tada, Y., Takahashi, K., Kuwata, K., Suzuki, T., Kinoshita, T. (2021) Frontiers in plant science Vol.12 pp.735271 [詳細] [Pubmed]

Suppression of MYC transcription activators by the immune cofactor NPR1 fine-tunes plant immune responses. Nomoto, M., Skelly, M., Itaya, T., Mori, T., Suzuki, T., Matsushita, T., Tokizawa, M., Kuwata, K., Mori, H., Yamamoto, Y., Higashiyama, T., Tsukagoshi, H., Spoel, S., Tada, Y. (2021) Cell reports Vol.37 pp.110125 [詳細] [Pubmed]

H3K27me3 demethylases alter HSP22 and HSP17.6C expression in response to recurring heat in Arabidopsis. Yamaguchi, N., Matsubara, S., Yoshimizu, K., Seki, M., Hamada, K., Kamitani, M., Kurita, Y., Nomura, Y., Nagashima, K., Inagaki, S., Suzuki, T., Gan, E., To, T., Kakutani, T., Nagano, A., Satake, A., Ito, T. (2021) Nature Communications Vol.12 [詳細]

A live imaging system to analyze spatiotemporal dynamics of RNA polymerase II modification in Arabidopsis thaliana. Shibuta, M., Sakamoto, T., Yamaoka, T., Yoshikawa, M., Kasamatsu, S., Yagi, N., Fujimoto, S., Suzuki, T., Uchino, S., Sato, Y., Kimura, H., Matsunaga, S. (2021) Communications Biology Vol.4 [詳細]

DNA methyltransferase CHROMOMETHYLASE3 prevents ONSEN transposon silencing under heat stress. Nozawa, K., Chen, J., Jiang, J., Leichter, S., Yamada, M., Suzuki, T., Liu, F., Ito, H., Zhong, X. (2021) PLOS Genetics Vol.17 pp.e1009710 [詳細] [Pubmed]

DRD1, a SWI/SNF-like chromatin remodeling protein, regulates a heat-activated transposon in Arabidopsis thaliana. Takehira, K., Hayashi, Y., Nozawa, K., Chen, L., Suzuki, T., Masuta, Y., Kato, A., Ito, H. (2021) Genes & Genetic Systems [詳細]

Transcriptome Dynamics of Epidermal Reprogramming during Direct Shoot Regeneration in Torenia fournieri. Morinaka, H., Mamiya, A., Tamaki, H., Iwamoto, A., Suzuki, T., Kawamura, A., Ikeuchi, M., Iwase, A., Higashiyama, T., Sugimoto, K., Sugiyama, M. (2021) Plant and Cell Physiology [詳細]

Transcriptomic Analysis of Resistant and Susceptible Responses in a New Model Root-Knot Nematode Infection System Using Solanum torvum and Meloidogyne arenaria. Sato, K., Uehara, T., Holbein, J., Sasaki-Sekimoto, Y., Gan, P., Bino, T., Yamaguchi, K., Ichihashi, Y., Maki, N., Shigenobu, S., Ohta, H., Franke, R., Siddique, S., Grundler, F., Suzuki, T., Kadota, Y., Shirasu, K. (2021) Frontiers in Plant Science Vol.12 [詳細]

De novo Sequencing of Novel Mycoviruses From Fusarium sambucinum: An Attempt on Direct RNA Sequencing of Viral dsRNAs. Mizutani, Y., Uesaka, K., Ota, A., Calassanzio, M., Ratti, C., Suzuki, T., Fujimori, F., Chiba, S. (2021) Frontiers in microbiology Vol.12 pp.641484 [詳細] [Pubmed]

Different DNA-binding specificities of NLP and NIN transcription factors underlie nitrate-induced control of root nodulation. Nishida, H., Nosaki, S., Suzuki, T., Ito, M., Miyakawa, T., Nomoto, M., Tada, Y., Miura, K., Tanokura, M., Kawaguchi, M., Suzaki, T. (2021) The Plant cell [詳細] [Pubmed]

Posttranslational regulation of multiple clock-related transcription factors triggers cold-inducible gene expression in Arabidopsis. Kidokoro, S., Hayashi, K., Haraguchi, H., Ishikawa, T., Soma, F., Konoura, I., Toda, S., Mizoi, J., Suzuki, T., Shinozaki, K., Yamaguchi-Shinozaki, K. (2021) Proceedings of the National Academy of Sciences of the United States of America Vol.118 [詳細] [Pubmed]

MYB3R-mediated active repression of cell cycle and growth under salt stress in Arabidopsis thaliana. Okumura, T., Nomoto, Y., Kobayashi, K., Suzuki, T., Takatsuka, H., Ito, M. (2021) Journal of plant research Vol.134 pp.261 [詳細] [Pubmed]

Oral RNAi ofdiap1results in rapid reduction of damage to potatoes inHenosepilachna vigintioctopunctata. Chikami, Y., Kawaguchi, H., Suzuki, T., Yoshioka, H., Sato, Y., Yaginuma, T., Niimi, T. (2021) JOURNAL OF PEST SCIENCE Vol.94 pp.505 [詳細]

Plasma membrane H+-ATPase overexpression increases rice yield via simultaneous enhancement of nutrient uptake and photosynthesis. Zhang, M., Wang, Y., Chen, X., Xu, F., Ding, M., Ye, W., Kawai, Y., Toda, Y., Hayashi, Y., Suzuki, T., Zeng, H., Xiao, L., Xiao, X., Xu, J., Guo, S., Yan, F., Shen, Q., Xu, G., Kinoshita, T., Zhu, Y. (2021) NATURE COMMUNICATIONS Vol.12 pp.735 [詳細] [Pubmed]

をいれる。ショートコードへの引数は空白で区切るか、このように名前付き引数にする。

WordPressの関数の使い方

  • 記事を投稿するには wp_insert_post 関数を使う。[使い方]
    投稿に成功すると記事についたID(post_id)が返ってくる。
  • 記事には自由にメタデータをつけることができる。今回はResearchMapからエクスポートしたJSONをそのまま埋めこんでおく。メタデータを加えるには add_post_meta 関数を使う。[使い方]
    メタデータから検索するにはquery_posts 関数を使ったが、これはどうもWordPressのメインループに影響を与えてしまうので、ダッシュボードから呼び出すときにしか使えないようす。ショートコードから呼び出すメソッドではwp_queryオブジェクトを使うのがよさそう。
    メタデータの値を取得するには get_post_meta 関数が使える。引数は、post_id、メタデータのキー。
  • 記事を検索するには WP_Query オブジェクトを使う。
    こちらを参考にした。https://elearn.jp/wpman/column/c20131030_01.html
    https://wpdocs.osdn.jp/関数リファレンス/WP_Query

参考にした資料

https://qiita.com/TanakanoAnchan/items/f1191c4c008f0a2b7c2e
管理画面のプラグインメニューで「設定」リンクを増やす方法