私はWordPressのプラグインを作りました、そしてそれは動きます。しかし、WordPress.orgプラグインチームに送ったところ、彼らはこう答えました。
Wp-load.phpを直接呼び出す
Wp-config.php、wp-blog-header.php、wp-load.php、またはインクルードを介して直接呼び出さなければならない他のほとんどのWordPressコアファイルをインクルードすることはお勧めできません。ファイルをロードする非常に良い理由がない限り、そうします。すべてのWordPressインストールがまったく同じファイル構造を持っているわけではないので、失敗する傾向があります。通常のプラグインには、WordPressのコア機能にアクセスするためのwp-config.phpまたはwp-load.phpが含まれていますが、これを行うにはもっと良い方法があります。あなたが処理している関数(コア関数を必要としているがそれにアクセスできないもの)を "init"や "admin_init"のようなアクションフックに結び付けるのが最善です。
詳細については、Plugins APIリファレンスを参照してください。 http://codex.wordpress.org/Plugin_API AJAXを使用しようとしている場合は、こちらをご覧ください。これ: http://codex.wordpress.org/AJAX_in_Plugins
どうすればいいのかわかりません:(
これは私のプラグインです http://szymoon.nazwa.pl/plugins/Printer-Friendly-WP.Zip
正しいプラグインを作成する良い例はどこにありますか?あるいはWordPress.orgチームによって承認されたもの。
これは、プラグインフォルダ内からPHPファイルを直接呼び出すためです。これは2つの理由でまずいことです。1つは、wp-content
フォルダー内のPHPファイルへの直接アクセスをブロックしている人がいます。 2つ目は、WordPress APIにアクセスするためにwp-load.php
を含める必要があります。
にリンクする代わりに…
site_url().""."/wp-content/plugins/Printer-Friendly-WP/print.php?id=page_id="."". get_the_ID()`
…これは直接リンクであり、壊れやすいです。現在の投稿のパーマリンクにquery argを追加するだけです…
add_query_arg( 'print-page', true, get_permalink() )
…そして、テンプレートがロードされる前に、URLにprint-page
クエリ引数が含まれているかどうかを確認します。
function load_printed_page() {
if ( ! get_query_arg( 'print-page' ) || ! $postid = get_the_ID() )
return;
query_posts('p='.$postid)
if (have_posts()) :
while (have_posts()) : the_post(); ?>
...
endwhile; endif;
}
add_action( 'template_redirect', 'load_printed_page' );
また、WP_Query
の代わりにquery_posts
またはget_posts()
を使用する必要があります。