web-dev-qa-db-fra.com

JavaScript, le meilleur moyen d'utiliser les données de la boucle

J'essaie d'apprendre WP le développement de thèmes. Et pour le moment, j'essaie de comprendre comment utiliser les données de la boucle en JavaScript.

Disons que j'ai quelques fonctions JavaScripts dans un fichier script externe chargé avec wp_enqueue. Et que ce script doit nous fournir beaucoup de données de la méta pour les publications.

Quelle est la meilleure pratique pour obtenir ces données de la boucle à mon script. Dois-je mettre les données en boucle dans des tableaux ou des objets JavaScript globaux que mon script utilise ensuite? Quelle est la "meilleure pratique"? Je pense tout particulièrement à "garder le code JavaScript à l'écart des modèles, et ne doit être chargé qu'à partir de fichiers externes".

J'ai aussi lu quelque part que lorsque vous utilisez des variables globales, des tableaux ou des objets dans WP, vous devez commenter cela au début du fichier? Est-ce correct? Et que devrais-je écrire dans cette tête de commentaire?

2
Alex

Vous pouvez utiliser WP_Query pour obtenir presque toutes les données de publication de votre installation Wordpress.

$sub_pages = new WP_Query(
    array( 
        'post_parent' => 3,
        'post_type' => 'page'
    )
);

print_r($sub_pages->posts);

Cela vous donnerait ce qui suit:

Array
(
    [0] => WP_Post Object
        (
            [ID] => 94
            [post_author] => 1
            [post_date] => 2015-08-20 11:19:27
            [post_date_gmt] => 2015-08-20 10:19:27
            [post_content] => Business operating...

Un tableau complet de messages. Donc, tout ce que vous avez à faire est d’en coder json et de l’envelopper dans des balises de script.

<script type="text/javascript">
    var post_info = <?php echo json_encode($sub_pages->posts); ?>;
</script>

Cela produira:

<script type="text/javascript">
    var post_info = [{"ID":94,"post_author":"1","post_date":"2015-08-20 11:19:27","post_date_gmt":"2015-08-20 10:19:27","post_content":"Business operating

Alors maintenant, si je mets ceci avant où je charge mon JavaScript, c.-à-d.

<script type="text/javascript">
    var post_info = <?php echo json_encode($sub_pages->posts); ?>;
</script>
<script type="text/javascript" src="script.js"></script>

Dans script.js je peux juste aller

console.log(post_info[0].ID);

Et nous aurons 94 dans la console.

2
Djave