J’ ai un problème, j’ne peux pas appeler un fichier php dans le leader (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 21)
  • Auteur
    Messages
  • #500677
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 3.2
    – Version de PHP/MySQL : 5 et une râwette
    – Thème utilisé : le mien
    – Extensions en place : aucune importance
    – Nom de l’hebergeur : ÔÔÔôovh
    – Adresse du site : http://www.ombres-et-lumieres.eu mais vous n’ y trouverez pas ce dont je vais vous parler

    Problème(s) rencontré(s) :

    Aaaapppel d’ un fichier php pour afficher une plage opus, je me crois encore en nété, donc une page de login.

    J’ ai créé un fichier page_login.php que j’ ai testé en local en l’ ajoutant dans mon menu via un template de page. Il a l’ air de vouloir fonctionner juste.

    D’ un autre côté, j’ ai introduit, dans le code du header, histoire, comme dirait Léon Napo, de Corser le tout, ce que vous n’ allez pas manquer de lire ci-de-sous, même si je n’ en suis pas près. Et surtout de me permettre de ne plus avoir l’ onglet « login » dans mon menu. Je sais que si l’ « if » fonctionne sans problème, je dois modifier sa seconde branche, sans, pour autant l’ élaguer: notre amie Else renvoit automatiquement à la bonne vieille page de login wordpress, ce qui n’ est pas très amusant.
    Donc:

    <div id="login">
    		  <?php if ( is_user_logged_in() ) { echo 'bienvenue'; ?>  <a href="<?php echo wp_logout_url( get_permalink() ); ?> » title= »Logout »>Log-out</a> <?php ;} 
    				 else { ?><a href="<?php echo wp_login_url( get_permalink() ); ?> » title= »Login »>Se connecter</a> <?php  } ?>
    		  
                   
               </div>

    J’ ai donc joyeusement dégommé, d’ un coup de gomme électronique, les mots « echo wp_login_url( get_permalink() ) » pour essayer de les remplacer par templatepath(), qui s’ est pris pour un lama et m’ a craché à la figure (essayez, c’ est assez bizarre d’ être face à un écran et d’ avoir subitement le visage humide).
    Je connaissais une autre option, pour l’ avoir utilisée dans mon fichier single, mais, de nouveau, cela ne fonctionne pas car, ici, il n’ y a pas de slug ou assimilé.

    Tout en décrivant le problème, je viens de penser à une troisième option.
    Comme quoi que celui qui a dit « explique toujours ton problème, même si je n’ y comprends rien tu pourrais trouver la lumière » a parfois raison.
    Je pensais à utiliser bloginfo(url) pour créer un chemin vers mon fichier

    #796452
    Guy
    Participant
    Maître WordPress
    14817 contributions

    TEMPLATEPATH retourne le chemin local alors que bloginfo retourne le chemin en http://&#8230;.

    #796453
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    bloginfo(‘url’) retournera l’url de la homepage
    bloginfo(‘template_url’) retournera l’url du dossier de ton thème

    donc si tu cherches à inclure le template de page page_login.php
    tu dois pouvoir le faire via
    bloginfo(‘template_url’). »page_login.php »

    #796454
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    c’ est un peu ce à quoi j’ avais pensé, après quelques recherches dans le journée. Je n’ ai juste pas encore eu le temps de préciser ma pensée.
    J’ ai également trouvé, dans le forum anglophone ce tutoriel expliquant comment réorienter tout lien vers le fichier login.php de wordpress, vers votre fichier.
    J’ ai bien envie d’ essayer car il y a de nombreux liens de login, au niveau des articles, et il serait plus simple de tout modifier avec quelques instructions que de faire la chasse à tous les appels « login ».

    #796455
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    Une première remarque: j’ utilise un thème enfant (d’ accord j’ aurais du le spécifier dans les questions du premier message, mais le père est tellement bricolé par son fils que cela ne vaut plu!s la peine d’ en parler, sauf lorsque cela génère une erreur.), donc ‘template_url » va aller fouiller dans le dossier parent et me renvoyer un message d’ erreur. Donc j’ ai préféré ‘stylesheet_directory’ puisque tous les fichiers du thème sont dedans, et donc mon fichier page_login.php.

    En bref, lorsque je clique sur le lien, il cherche bien à exécuter les instructions, s’ étonne de ce qu’ il trouve et me renvoi une floppée d’ injure du genre: ligne x: truc inconnu. Je ne recopie pas, non par pitié de vos chastes yeux, mais, tout simplement parce que je ne pense pas que cela ait de l’ importance: la même page, ajoutée comme onglet dans le menu principal, fonctionne parfaitement.
    Cependant, d’ une part, je ne veux pas alourdir mon menu, et, de l’ autre, un login a plus sa place dans un coin, car il ne fait pas partie du menu.

    Un dernier détail: en ce moment je fais les test en local.

    #796456
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    scuse mais : c’est une question ?

    #796457
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    j’ ai tout mis en ligne.
    L’ onglet surnuméraire est est dessous du « home »

    #796458
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    scuse mais : c’est une question ?

    C’est juste la suite, ma réponse aux informations données, avec explications de ce qui a été fait, et, finalement mon incompréhension devant le fait qu’ un fichier php s’ exécute correctement dans un cas et pas dans l’ autre, suivant la manière dont il est appelé.

    Mais, si tu tiens a voir une question, la voici: « Mais c’ est quoi c’ bordel ? »

    #796459
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Il faudrait d’une part le code qui ne fait pas ce qu’on lui demande (sans la balise code du forum qui affiche ce qui l’arrange)

    Un message d’erreur apporte souvent des informations utiles.

    #796460
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    le message d’ erreur arrive à l’ écran lorsque tu clique sur « se connecter » en haut à gauche (enfin à droite puisque lorsque je suis dans l’ écran lorsque tu regarde mon site). Et il ouvre la même page que l’ onglet « login » qui fontionne.
    En ce qui concerne les codes, on a :

    <div id="login">
    		    <a href=" » title= »Logout »>Log-out</a> <a href=" » title= »Login »>Se connecter</a> 
    		  
                   
               </div>

    pour le login en haut à droite,

    <ul>
    					<li class="home" ><a href=" » title= »Home »>Home</a></li>
    					
    				</ul>

    en ce qui concerne le menu. Et:

     $user_pass,  
                ‘user_login’ => esc_attr( $_POST[‘user_name’] ),  
                ‘first_name’ => esc_attr( $_POST[‘first_name’] ),  
                ‘last_name’ => esc_attr( $_POST[‘last_name’] ),  
                ‘user_email’ => esc_attr( $_POST[’email’] ),  
                ‘role’ => get_option( ‘default_role’ ),  
            );  
    		
    		if ( username_exists($userdata[‘user_login’]) )  
                $error = __(‘Sorry, that username already exists!’, ‘frontendprofile’); 
    		elseif ( !is_email($userdata[‘user_email’], true) )  
                $error = __(‘Please enter a valid email address.’, ‘frontendprofile’);  
            elseif ( email_exists($userdata[‘user_email’]) )  
                $error = __(‘Sorry, that email address has already been used!’, ‘frontendprofile’);  
           
            else{  
                $new_user = wp_insert_user( $userdata );  
                wp_new_user_notification($new_user, $user_pass);  
           
                update_usermeta( $new_user, ‘website’, $_POST[‘website’]    );  
            }

    Ceci provient d’ un tutoriel pour créer un espace membre. Je l’ ai un peu modifié pour l’ adapter à mes besoins, mais uniquement en modifiant les conditions. La suite, en dessous du code purement php, est le vrai début de page, avec l’ appel au header et un formulaire mélangeant html et php.
    Le résultat est visible ici: http://www.ombres-et-lumieres.eu/login/, page atteinte par l’ onglet « login »
    Par contre le lien http://www.ombres-et-lumieres.eu/wp-content/themes/ombres-et-lumieres/page_login3.php généré par la fonction « bloginfo » me conduit droit dans le mur.

    #796461
    Guy
    Participant
    Maître WordPress
    14817 contributions

    je me demande pourquoi je prend la peine préciser de mettre le code sans la balise code :(

    La balise code du forum est complétement bugguée.

    #796462
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    ouep, idem pour la balise quote…

    #796463
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    bon je veux bien le réécrire et, Gui, désolé je me demandais aussi où tu voulais en venir avec ton « sans la balise code du forum ». Pour moi l’ affichage est juste.
    Et il faudrait se mettre d’ accord car lors de mon premier post je me suis fait allumer parce que justement je ne l’ avais pas utilisée et que j’ avais écrit mes lignes de code comme parties intégrantes du texte.

    Donc, nous disions:

    Code de la zone login, en haut à droite:

    <?php if ( is_user_logged_in() )
    {echo ‘bienvenue’; ?> <a href=" » title= »Logout »>
    Log-out

    <?php ;}
    else{ ?><a href=" » title= »Login »>
    Se connecter

    code du menu:

      <li class="home" ><a href=" » title= »Home »>Home
      <?php
      $my_pages = wp_list_pages(‘exclude=244, 273, 276&title_li=’ ?>

    début du code de la page page_login.php:

    html

    <?php /* Template Name: page d' enregistrement3 */

    /* Load registration file. */
    require_once( ABSPATH . WPINC . ‘/registration.php’ );

    /* Check if users can register. */
    $registration = get_option( ‘users_can_register’ );

    $user_pass = wp_generate_password();
    $userdata = array(
    ‘user_pass’ => $user_pass,
    ‘user_login’ => esc_attr( $_POST ),
    ‘first_name’ => esc_attr( $_POST ),
    ‘last_name’ => esc_attr( $_POST ),
    ‘user_email’ => esc_attr( $_POST ),
    ‘role’ => get_option( ‘default_role’ ),
    );

    if ( username_exists($userdata) )
    $error = __(‘Sorry, that username already exists!’, ‘frontendprofile’);
    elseif ( !is_email($userdata, true) )
    $error = __(‘Please enter a valid email address.’, ‘frontendprofile’);
    elseif ( email_exists($userdata) )
    $error = __(‘Sorry, that email address has already been used!’, ‘frontendprofile’);

    else{
    $new_user = wp_insert_user( $userdata );
    wp_new_user_notification($new_user, $user_pass);

    update_usermeta( $new_user, ‘website’, $_POST[‘website’ }

    ensuite vient le formulaire précédé du header

    et, en ce qui me concerne, je n’ ai jamais eu de problème avec ces balises.

    #796465
    Guy
    Participant
    Maître WordPress
    14817 contributions

    arf désolé de t’avoir fait remettre le code, je mettais en cause la balise code du forum alors qu’a priori, c’est ton code qui n’est pas bon.

    Dans la zone Login, il y a un <a href=" », le echo de rien a peu d’utilité.

    Dans le code du menu, il ne doit pas y avoir grand chose qui marche et il n’est pas étonnant que tu ais des messages d’erreur:
    : j’ai une grosse interrogation sur l’utilité de la chose.
    : il doit manquer un petit quelquechose
    : même remarque.

    C’était le premier message portant uniquement sur la forme/syntaxe, je n’ai pas encore regardé le fond.

    #796466
    Guy
    Participant
    Maître WordPress
    14817 contributions

    le code suivant est celui de la page page_login3?

    <?php /* Template Name: page d' enregistrement3 */

    /* Load registration file. */
    require_once( ABSPATH . WPINC . ‘/registration.php’ );

    Si c’est cela, il manque l’inclusion des définitions des fichiers de WordPress te permettant d’appeler les define et autres focntions.

    met un require_once(‘./wp-load.php’); en début de fichier pour les avoir.

15 sujets de 1 à 15 (sur un total de 21)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.