web-dev-qa-db-fra.com

Pourquoi mon plugin a-t-il été rejeté du référentiel WordPress.org?

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.

1
user33913

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

5
shea