WordPress est mal codé ! (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 62)
  • Auteur
    Messages
  • #449528
    cdvddt
    Participant
    Initié WordPress
    9 contributions

    Bonjour,

    J’utilise WordPress depuis quelques temps,
    et j’ai été amené à bidouiller pas mal du coté du
    système de templates pour développer mon porpre
    thème.

    J’en arrive à la conclusion suivante : Worpdress
    a été codé avec des moufles. Je veux dire, en tout
    cas l’API de template est absolument dégueulasse et
    ne donne vraiment pas envie d’aller voir le reste du
    code.

    Les erreurs de cette API sont double : Erreurs de
    conception / de codage.

    Voici une liste non exhaustaive de mes doleances :

    o Utilisation a outrance de fonctions pour chaque champ,
    dépendant d’un contexte scrict d’execution et de variables
    globales le fameux ‘The_Loop’, la ou la programmation object
    serait bien plus légere et souple.
    Pourquoi reinventer une semantique lourde avec ces
    concept fumeux de ‘tags’ ?

    Ou est l’utilite d’ecrire

    while(the_post()) {

    the_title();

    }

    au lieu de :

    foreach($posts as post) {

    echo $post->title;

    }

    o Melange de fonctions d’affichage et de fonction remvoyant une valeur
    sans aucnue uniformite dans les options :
    A quoi sert t’il de developper une fonction affichant un truc et une autre
    la renvoyant. php fournit des fonctions pour l’affichage …
    est equivalent a

    o Soupe de mélange entre presentationet contenu.
    Pourquoi diable la fonction list_cats s’occupe t’elle de formattage ?
    Et si je veux pas de liste dans des

  • ? Je developpe un neime
    plugin bancal pour faire une copie personnalisee de cette fonction ?
    Une liste d’objects bien faits feriaent l’affaire, je sais faire une boucle :
    $post->getCategories()
    ou toutes les categories
    $wp->allCategories();
    Et un moyen de descendre dedans recursivement, genre
    $cat->getChildCats();

    o Passage de parametres farfelus.
    J’ai jamais compris pourquoi il fallait passer
    les parametres avec une chaine occulte genre « addchild=1&toto=truc »
    php gere les passage de parametres optionnels et les parametres par defaut.

    o Les globales en folies :
    La gestion de variables globales en php est une horreur, et son mecanisme
    va a l’encontre des choix de tous les autres langages de programmation.
    Pourquoi ne pas tout regrouper dans un unique object contenant tous
    les object ‘contextuels’ nexcessaire a l’affichage de chaque page :
    genre
    $wp->
    /* Des parametres globaux */
    blogTitle
    rssEntriesURL
    rssCommentsURL
    ….
    allPages (liste des pages)
    allCategories (liste des categories)
    recentPosts (liste d’object post)

    /* Les information sur le conetnu courant a afficher*/
    currentEntries (list des posts/pages selectionnees)
    context (contexte d’affichage : soit un unique post ()single, ou une categories, des mots clefs de recherche, etc)
    currPageIdx
    NbPages (pour la pagination)

    Le tout avec une utilisation intelligente de la programmtion object
    pour se debarrasser de ce fouilli de fonctions inutiles.

    Tout ca fait que le developpement de themes sous WordPress est lourd
    et sale : C’est une suite de bidouillages tordus pour contourner
    de gros problemes de conception.

    Voila,
    Qu’en pensez vous ? Par ou commencer pour proposer une refonte en ce sens
    du code de wordpress (je veux bien aider).

    Raphael

    Modération de BenKenobi : Modification du titre

#585459
matthieu
Membre
Chevalier WordPress
296 contributions

Wouaou, avec une liste de griefs aussi longue serait temps de songer à migrer sur autre script de blog Raphaël, non ?

Sinon Wp france ne s’occupe pas de développement sur le coeur du script.
Essaye de voir, point par point, por tes doléance sur le Trac
http://trac.wordpress.org/

Ou t’inscrire à la wp-hackers mailing list pour aller encore plus loin dans les discussions poussées autour du code
http://wordpress.org/development/2004/06/hackers/

Mais je te le répète, si WP t’apporte autant de douleur dans ta vie de dév-PHP de tous les jours, logiquement, tu devrais migrer vers une autre solution.

#585460
benkenobi
Participant
Maître WordPress
4069 contributions

S’il s’avère que toutes tes propositions sont cohérentes et justifiées, alors tu pourrais effectivement en faire profiter les concepteurs de WordPress, comme Mathieu viens de le dire… ce serait ainsi toute la communauté de WP qui en profiterait dans des mises à jours ultérieures.

Sinon, ton titre est un peu vulgaire à mon goût…

#585461
Qwindoo
Modérateur
Maître WordPress
2861 contributions
cdvddt wrote:
o Utilisation a outrance de fonctions pour chaque champ,
dépendant d’un contexte scrict d’execution et de variables
globales le fameux ‘The_Loop’, la ou la programmation object
serait bien plus légere et souple.
Pourquoi reinventer une semantique lourde avec ces
concept fumeux de ‘tags’ ?

Ou est l’utilite d’ecrire

while(the_post()) {

the_title();

}

au lieu de :

foreach($posts as post) {

echo $post->title;

}

Totalement d’accord avec toi !
Ca se lit tout aussi simplement (voire plus quand on parle anglais) et les fonctions étant « built-in » c’est très rapide 🙂

cdvddt wrote:
o Melange de fonctions d’affichage et de fonction remvoyant une valeur
sans aucnue uniformite dans les options :
A quoi sert t’il de developper une fonction affichant un truc et une autre
la renvoyant. php fournit des fonctions pour l’affichage …
est equivalent a

Là-dessus, je ne suis pas totalement d’accord: la synthaxe est obsolète et non supportée sur tous les serveurs, or WordPress a été pensé pour être le plus compatible possible 😉

De plus, il est parfois utile de récupérer une donnée à un endroit, par exemple pour la passer en paramètre à une fonction, et de l’afficher directement à un autre endroit (exemple avec une donnée de configuration que l’on affiche sur la page et qu’on passe en argument à une fonction pour lui donner une action particulière 😉 )

cdvddt wrote:
o Soupe de mélange entre presentationet contenu.
Pourquoi diable la fonction list_cats s’occupe t’elle de formattage ?
Et si je veux pas de liste dans des

  • ? Je developpe un neime
    plugin bancal pour faire une copie personnalisee de cette fonction ?
    Une liste d’objects bien faits feriaent l’affaire, je sais faire une boucle :
    $post->getCategories()
    ou toutes les categories
    $wp->allCategories();
    Et un moyen de descendre dedans recursivement, genre
    $cat->getChildCats();
  • Totalement d’accord aussi, mais c’est tellement plus simple à gérer par des débutants… :D

    cdvddt wrote:
    o Passage de parametres farfelus.
    J’ai jamais compris pourquoi il fallait passer
    les parametres avec une chaine occulte genre « addchild=1&toto=truc »
    php gere les passage de parametres optionnels et les parametres par defaut.

    D’accord aussi, je n’ai jamais osé non plus regarder comment le core de WP interprétait ce genre de chaînes, mais à mon avis c’est à coup de bonnes grosses expressions rationnelles xD

    cdvddt wrote:
    o Les globales en folies :
    La gestion de variables globales en php est une horreur, et son mecanisme
    va a l’encontre des choix de tous les autres langages de programmation.
    Pourquoi ne pas tout regrouper dans un unique object contenant tous
    les object ‘contextuels’ nexcessaire a l’affichage de chaque page :
    genre
    $wp->
    /* Des parametres globaux */
    blogTitle
    rssEntriesURL
    rssCommentsURL
    ….
    allPages (liste des pages)
    allCategories (liste des categories)
    recentPosts (liste d’object post)

    /* Les information sur le conetnu courant a afficher*/
    currentEntries (list des posts/pages selectionnees)
    context (contexte d’affichage : soit un unique post ()single, ou une categories, des mots clefs de recherche, etc)
    currPageIdx
    NbPages (pour la pagination)

    Le tout avec une utilisation intelligente de la programmtion object
    pour se debarrasser de ce fouilli de fonctions inutiles.

    +1 encore 😉

    cdvddt wrote:
    Tout ca fait que le developpement de themes sous WordPress est lourd
    et sale : C’est une suite de bidouillages tordus pour contourner
    de gros problemes de conception.

    Voila,
    Qu’en pensez vous ? Par ou commencer pour proposer une refonte en ce sens
    du code de wordpress (je veux bien aider).

    Raphael

    Je suis totalement d’accord avec toi, tes revendications sont clairement exprimées et justifiées… maintenant il faut convaincre la communauté, car ces modifications impliqueraient une refonte totale des thèmes et des plugins qui font la richesse de WordPress de par leur diversité 😉

    Modération de BenKenobi : Modification du titre
    => +1 pour BenKenobi, j’ai failli avoir une attaque quand j’ai vus les nouveaux messages :D

    #585462
    quentin
    Membre
    Chevalier WordPress
    315 contributions

    globalement je suis assez d’accord. Quid des requetes get_var() qui ramenent une colonne d’une table, et 2 lignes plus loin une autre requete qui ramene une autre colonne de la meme ligne ? Et quid encore de ces memes requetes exécutées 10, 15 fois dans le chargement d’une page ? Je sais que mysql a des fonctions de cache sympathiques, mais quand meme…
    Globalement je te conseille lifetype (anciennement plog) si tu attaches vraiment de l’importance au code. Tout est OO, tout est beau, c’est vraiment bien fichu. Par contre, l’avantage de WP, c’est les milliers de thèmes dispos, les plugins, etc. La aussi, rein a voir du coté de lifetype…

    #585463
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    LifeType a l’air assez lourd, avec ses centaines de classes (le répertoire /class/ contient 676 fichiers dont les 3/4 sont des classes) …
    C’est ça le problème avec la POO aujourd’hui: soit on n’en fait pas du tout, soit on en fait trop 😕 😕

    Sinon je suis aussi d’accord pour la (très) mauvaise gestion des flux SQL par WordPress !

    (Note aux admins 😇) Pourquoi ne pas se faire une page Wishlist pour la prochaine version de WordPress où on mettrait (en anglais bien sûr) nos « revendications » en argumentant pour convaincre les développeurs ?

    #585464
    cdvddt
    Participant
    Initié WordPress
    9 contributions

    Ok merci.
    Ca fait plaisir de voir que vous etes du meme avis.

    Pour le titre un peu grossier, desole, c’etait fait sur le coup de
    l’enervement.
    Et comme chacun sait, il ne faut jamais faire de mail/post sur la coup de
    l’enervement.

    Je vais traduire mes demandes en anglais et voir sur le site
    anglophone.

    Raphael

    #585465
    xavier
    Participant
    Maître WordPress
    2124 contributions

    Tout ne me semble pas justifié, mais comme d’hab’ dans l’Open Source, si tu as de meilleures idées, propose-les ! 🙂

    #585466
    z720
    Membre
    Maître WordPress
    578 contributions

    Et encore tu n’as regarder que l’API des templates…

    C’est vrai que WordPress est mal codé, mais il fonctionne bien. Un mal pour un bien.

    A toi de voir si ça te convient, sinon il existe beaucoup d’autres solutions. En terme de cohérence dans le code, je te conseille DotClear2 : full objet donc uniquement pour php5, encore en beta donc pas forcement stable, pas totalement documenté. Mais propre.

    Nous ne devrions pas avoir à choisir entre l’état de l’art et l’efficacité mais c’est souvent le cas. (et pas que pour les blogs)

    NB : pour les passages de paramètres « farfelus », il s’agit du format query_string comme dans les URL, donc php sait les interpréter nativement. http://php.net/manual/fr/function.parse-str.php

    #585467
    AmO
    Participant
    Maître WordPress
    4447 contributions

    Si on suit ta vision des choses.
    Aucune application PHP existante (cms, blog) n’est bien codée !

    C’est une vision utopique que tu as la.

    Le modèle objet… d’accord c’est bien.
    La séparation des couches métiers, c’est une révolution dans les méthodes de dévelopement certes !

    Mais toutes ces fonctionnalité ne sont disponibles (pleinement) que depuis PHP5, donc c’est récent !
    WordPress n’est finalement qu’un Fork de b2 evolution

    Il a été développé bien avant le PHP5 et cet engouement pour un développement orienté Objet.

    Comme me dit, mon ami, Kevin, ce que tu veux finalement cdvddt, c’est une application « développpé à la .NET »
    (les connaisseurs comprendronts)

    Pour moi, l’API Template de WordPress est adapté pour les personnes ayant peu de connaissance en php et en programmation en général.
    Dès que tu souhaite customiser un WordPress, tu sera obligé de passer par des plugins/hacks.(
    (ce que je fais dans ma boite)

    Donc la force de WordPress, c’est une API Template, très très documentée, et surtout très « Ready to USE » au détriment des performances !

    (et si tu trouves WordPress si inadapté que ca, utilise un framework… ca correspondra surement plus à tes besoins…)
    Ne pas confondre CMS et Framework…

    #585468
    KevinD
    Membre
    Initié WordPress
    46 contributions

    Moi j’aimerai bien voir un site bien codé comme tu le dis !!!

    et j’ai vu par expérience (certes courte mais expérience quand même) que bien codé != performant, après tu choisi tes objectifs,

    de plus, si tu veux un CMS entièrement orienté objet avec un code « tout beau » (parceque plein de classe), prend en un en asp.net (langage génial pour ce genre de conception)
    j’en connai justement un « très bien codé » : Community Server !!!
    il est tellement génial que sa mise en production nécessite une formation de deboggeur ^^

    et pour finir, si le code de WordPress te déplaie tant que ca change de plateforme de publication !!!
    (perso, je trouve pas WordPress super bien codé, mais il fonctionne très bien et je ne m’en plains pas !)

    #585469
    AmO
    Participant
    Maître WordPress
    4447 contributions

    PunBB != Conception Objet

    Bonne perf 🙂

    #585470
    KevinD
    Membre
    Initié WordPress
    46 contributions

    Le gros inconvénient de l’orienté objet est la facilité de compréhension et d’utilisation, donc pas pour le débutant !
    Hors, je pense qu’il y a pas mal de débutant qui utilise WordPress et qui font des hacks dessus grâce à sa facilité d’utilisation et à sa documentation !!!

    #585471
    AmO
    Participant
    Maître WordPress
    4447 contributions

    On peut meme dire :

    Conception objet => Projet techniquement compliqué=> moins de contributeur => developpement moins rapide => moins d’extensions tierses => moins de fonctionnalités => moins populaire => :D

    SUPINFO en force la 🙂
    Et sinon vive le Python ?

    A ce sujet vous saviez que Google est codé à 90% en Python ?

    #585472
    AmO
    Participant
    Maître WordPress
    4447 contributions

    En passant Lifetype et le moteur de template Smarty… c’est pas vraiment une référence… très loin même !

    15 sujets de 1 à 15 (sur un total de 62)
    • Vous devez être connecté pour répondre à ce sujet.