web-dev-qa-db-ja.com

自分のプラグインをテーマに依存しないようにするにはどうすればいいですか?

私は私の次のステップのために少しの助けそして/または相談を必要とします。 (私は初心者です!)

私はカスタム投稿タイプ "プロジェクト"、プラグイン "高度なカスタムフィールド"からの助けを使って私のプラグインに取り組んできました - そして今私は一般的な機能に成功しました。こちらの 画像をご覧ください。http://www.project22.org/project/ 機能を見るために。 私は認めます、似たようなことをしているプラ​​グインがあるかもしれませんが、私は自分の特定のニーズに合わせてそれらのコードを理解し調整するにはまだ十分進んでいません;(。

私はTwentytwelveの子テーマの中で仕事をしていて、いくつかのテンプレートファイルを扱う必要がありました。 get_template_part()で使用するためにsingle-project.phpとproject_loop.phpを作成しました。

問題:

  • 私はもうTwentytwelveにそれほど満足していません - 私は私のテーマを変える際にいくらかの柔軟性を保ちたいです。
  • たぶんいつか自分のプラグインを誰かと共有したいですか?

だから今私の目的はプラグインに機能のすべての部分を移動することです...

質問:

  • 任意のテーマのさまざまな投稿に関するこれらの小さな情報を表示するにはどうすればよいですか。適切なフックやフィルタが見つかりませんでした。
  • 後で新しいテーマを台無しにする可能性があるテーマテンプレートファイルを作成しないようにするにはどうすればよいですか。

[] - ショートコードを使用したり、テンプレートファイルやスニペットを作成したり、フックしたり、フィルタをかけたりすることができます。

Floさん、ありがとうございます。

1
Flow

ショートコードは間違いなく良いスタートです。コンテンツの出力先(ウィジェット、投稿、ページ、php関数の内部など)に関しては非常に柔軟です。

作成したアクションフックとカスタム投稿タイプを使用して、テンプレート出力を簡単に上書きすることもできます。

add_action('the_content', 'add_project_content');

function add_project_content($content) {
    // Only override the content of project custom post type page
    if (is_singular('project')) {
        // You can re-use original content stored in $content and simply add things before and after, or you can simply override them with something new
        $content = "whatever you want";
        $content .= somefunction_output();
    };

    return $content;
}

これにより、テンプレートファイルを扱う必要がなくなり、テーマの更新に合わせて変更内容を一致させる必要がなくなります。これらの方法で、私は自分の子テーマフォルダに追加のテンプレートファイルを作成することをやめました。

2
Elisha Terada