web-dev-qa-db-ja.com

プラグインテンプレート内のHTMLコード

多分私は盲目か何かですが、私はたくさんここでそしてまたワードプレスコーデックスと同様のものを検索しました。例では、私はデータベースから何かを読むプラグインを書いています。しかし、どうすれば自分が出力していないことをプラグイン自体にアーカイブできますか?アイデアは、変数をテーマに置き、残りをテーマにするというものでした。あなたがグローバル変数を使いたくないとき、これはdo_shortcodeでのみ可能ですか?私が例で8つの変数を持っているとき、どのように私は単一のショートコードでそれをすることができますか?私が言ったように、おそらく私は盲目で、正しいことを見つけられませんでした。それとも、その単純なことをするためのベストプラクティスは何ですか?おそらく誰かが小さなコードの例をお持ちですか?

よろしくと感謝

1
Burnhardo

そのための1つの方法は、プラグインファイルの中でエコーやリターンを返す関数を定義し、必要に応じてテーマファイルの中でその関数を使用することです。

例えばあなたのmy-awesome-plugin.php

function hello_world() {
    echo 'Hello world!';
}

そして、あなたのテーマファイルの中で、single.phpとしましょう。

// safety check if your plugin ever gets disabled
if ( function_exists( 'hello_world' ) ) {
    hello_world();
}

これにより、1つの投稿にHello world!となります。

その後、プラグインファイルで定義した関数を使ってどのような種類のものを返すかエコーするかを決めるのはあなた次第です。それはhtml、整数、配列、オブジェクト、whatnotsの文字列かもしれません...

これらの例はあなたの状況であなたを助けますか?

EDIT投稿した直後に質問をもう一度読んだとき、私はそれを誤解して不適切に答えたのかもしれないことに気づきました。

プラグインファイルでクラスを定義し、そこにデータを格納することができます。それから、その単一のインスタンスを返す関数を持っています。 WooCommerceも同様です。

から https://github.com/woocommerce/woocommerce/blob/master/woocommerce.php

function wc() {
    return WooCommerce::instance();
}

クラスの初期化に関しては良い答えがここにあります、 WPプラグインでクラスを開始するための最良の方法?

1
Antti Koskinen