J'ai créé un plugin WordPress, et ça marche. Mais lorsque je l’envoie à l’équipe du plugin WordPress.org, ils répondent:
Appeler directement wp-load.php
Inclure wp-config.php, wp-blog-header.php, wp-load.php ou à peu près tout autre fichier de base WordPress que vous devez appeler directement via une inclusion n'est pas une bonne idée et nous ne pouvons pas approuver un plugin le fait sauf s'il a une très bonne raison de charger le (s) fichier (s). Il est sujet aux échecs car toutes les installations de WordPress n’ont pas exactement la même structure de fichier. Les plugins incluent généralement wp-config.php ou wp-load.php afin d'accéder aux fonctions de base de WordPress, mais il existe de bien meilleures façons de le faire. Il est préférable de lier vos fonctions de traitement (celles qui ont besoin mais qui n’ont pas accès aux fonctions principales) dans un hook d’action, tel que "init" ou "admin_init".
Veuillez consulter la référence de l'API Plugins pour plus d'informations: http://codex.wordpress.org/Plugin_API Si vous essayez d'utiliser AJAX, veuillez lire ceci: http://codex.wordpress.org/AJAX_in_Plugins
Je ne sais pas quoi faire :(
Ceci est mon plugin http://szymoon.nazwa.pl/plugins/Printer-Friendly-WP.Zip
Où est un bon exemple de faire le bon plugin? Ou un qui a été accepté par l'équipe WordPress.org.
En effet, vous appelez directement un fichier PHP à partir de votre dossier de plug-ins. Cela est grave pour deux raisons, la première étant que certaines personnes bloquent l'accès direct aux fichiers PHP dans le dossier wp-content
. La seconde est que vous devez inclure wp-load.php
pour accéder à l'API WordPress.
Au lieu de créer un lien vers…
site_url().""."/wp-content/plugins/Printer-Friendly-WP/print.php?id=page_id="."". get_the_ID()`
… Qui est un lien direct et vulnérable à la rupture, ajoutez simplement une requête arg à la publication actuelle permalink…
add_query_arg( 'print-page', true, get_permalink() )
… Et vérifiez ensuite si l'URL contient l'argument de requête print-page
avant le chargement du modèle:
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' );
De plus, vous devriez utiliser WP_Query
ou get_posts()
au lieu de query_posts