12
votes

Inclure le noyau de wordpress dans des scripts propres

J'essaie de "importer" le noyau de WordPress dans un script propre pour utiliser les fonctionnalités telles que WP_Query, etc. J'ai créé un script dans un sous-répertoire (cadre propre) et souhaitez l'étendre par WordPress, mais à chaque fois Le script jette une erreur:

Erreur fatale : appelez à une fonction de membre add_rewrite_tag () sur un non-objet dans ... / WordPress / WP-Inclus / Taxonomy.php < / B> On Line 333

tel que (lorsque je supprime l'add_action ('init', 'create_initial_taxonomies', 0)):

Erreur fatale : appelez à une fonction de membre add_rewrite_tag () sur un objet non-objet dans ... / wordpress / wp-inclus / post.php en ligne 1006

Le non-objet est l'objet $ wp_rewrite. J'ai écho à quelque chose et j'ai compris que le premier $ wp_rewrite est valide et à l'appel suivant non. Je n'ai rien changé dans les fichiers principaux WP.

J'essaie d'inclure le noyau en appelant: xxx

a quelqu'un de quelques idées pour moi? < / p>

merci


0 commentaires

3 Réponses :


23
votes

Réponse courte, faites ceci:

function myFramework() {
    $wordpress = 'foo';

    function wordpressFunction() {
        global $wordpress;
    }
}


4 commentaires

que j'ai aussi compris après quelques tests. Les étendues de WordPress conduit quelqu'un parfois folle. Lorsque l'on comprend le noyau dans une fonction, le noyau entier a des problèmes car les variables sont dans une portée illisible


L'ajout des globaux ne semblait pas m'aider, mais cela m'a au moins aidé à identifier le problème et j'ai trouvé le chargement de WordPress dans la portée globale (au lieu d'une fonction où elle était chargée) résolue mon problème. Merci!


@Ricanderson Je suppose que les globaux ont peut-être changé.


@ JL235 a travaillé comme un charme et une belle explication



1
votes

J'ai eu la même erreur. Je voulais obtenir des articles avec les permaliens. Cela a aidé:

global $wpdb, $wp_rewrite;
require '/(...)/wp-config.php';

$result = $wpdb->get_results( $wpdb->prepare( ... ) );
foreach( $result as &$item )
  $item->link = get_permalink( $item->ID );


0 commentaires

2
votes

Le moyen le plus simple d'accéder à tout type de WordPress est programmé consiste à utiliser ce qui suit: xxx

à l'aide du code ci-dessus, vous obtiendrez toutes les fonctions que vous recevrez normalement un modèle avec WordPress . J'ai essayé toutes les autres méthodes énumérées ci-dessus et celle-ci est de loin le meilleur.


0 commentaires