2011-01-12 2 views
0

wordpress Je veux utiliser cette fonction en quelque sorte sur une page non wordpress:fonction Wordpress if_logged_in page non

<?php 
if (is_user_logged_in()){ 
    echo "Welcome, registered user!"; 
} 
else { 
    echo "Welcome, visitor!"; 
}; 
?> 

Est-il possible de le faire? On m'a dit que c'est possible si j'incluais mon wp-header.php dans la page Non-wordpress, mais je ne veux pas faire ça. D'autres méthodes?

+0

Fonction d'écriture is_user_logged_in(). Utilisez des sessions. – rrrfusco

Répondre

1

Vous devez utiliser l'en-tête Wordpress parce que cette fonction est dans le noyau. La seule autre option est d'écrire votre propre fonction avec le même nom, en utilisant la même base de données des utilisateurs.

0

Vous n'avez pas besoin d'inclure le fichier admin-header.php. Il suffit d'inclure ce fichier:

wp-includes/pluggable.php

Ce fichier contient la définition de is_current_logged_in(), ainsi que beaucoup d'autres aides de données utilisateur tels que wp_set_current_user(), wp_get_current_user(), etc.

+0

bonjour, désolé, je suis tout à fait nouveau pour php et autres joyeusetés. Pourriez-vous me dire exactement ce que je peux copier/coller dans mon fichier html non-wp? – GreatestSwordsman

+0

attendez une minute, vous voulez utiliser cette fonction en dehors de WordPress? – garyc40

+0

Oui, c'est sur une page html qui se trouve dans le répertoire racine wordpress, mais ça ne fait pas partie de wordpress, je fais quelque chose sur le bloc-notes – GreatestSwordsman

0

Y compris wp-load.php est la meilleure façon de faire. Il y a des tas de façons de contourner cela, mais j'utiliser quelque chose de similaire à ce qui suit:

$wp_load_location_array = array(); 
$wp_load_location_array[] = "../../../../../../wp-load.php"; 
$wp_load_location_array[] = "../../../../../wp-load.php"; 
$wp_load_location_array[] = "../../../../wp-load.php"; 
$wp_load_location_array[] = "../../../wp-load.php"; 
$wp_load_location_array[] = "../../wp-load.php"; 

foreach($wp_load_location_array as $wp_load_location) 
{ 
    if(file_exists($wp_load_location)) 
    { 
     require_once($wp_load_location); 
    } 
} 

Il est un peu un hack et si vous connaissez réellement l'emplacement du fichier wp-load.php, alors vous pouvez juste utilisez cela dans la fonction require_once(). Mettez cela en haut de votre fichier et vous serez en mesure d'utiliser toutes les fonctions de WordPress dans votre page non-wordpress.

+0

Pourquoi inclure la méthode wp-load ? Normalement, vous connaissez l'emplacement du fichier wp-load ... – brokedid

+0

Parce que parfois vous ne le faites pas? Supposons que vous développiez un thème ou un plugin pour que d'autres puissent l'utiliser? Si vous avez besoin de charger des fonctions WP, vous devez charger WP. Il n'y a pas de façon «nette» de le faire si vous ne savez pas où se trouve le fichier wp-load.php. Vous pouvez faire des requêtes ajax sans avoir à faire cela, mais si vous avez besoin de fonctions telles que l'OP, alors, pour l'instant, cette façon laide de faire les choses est la voie à suivre si vous ne savez pas où se trouve le fichier. – RichardTape

1

Vous devez charger le Core Wordpress dans votre script actuel. Vous pouvez le faire comme ceci:

//wp-admin 
    require $_SERVER['DOCUMENT_ROOT'].'/wp-load.php'; 

    //Check if someone is logged in 
    global $user_level; 
    get_currentuserinfo() ; 
    //echo "User Level = $user_level<br>"; 
    if ($user_level < 1) 
      die('You aren\'t allowed to view this!');