2011-01-12 3 views
0

Я хочу, чтобы каким-то образом использовать эту функцию на не WordPress странице:Wordpress if_logged_in функции на Non-WordPress странице

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

Есть ли способ сделать это? Мне сказали, что это возможно, если я включу свой wp-header.php на странице без Wordpress, но я не хочу этого делать. Любые другие методы?

+0

Функция записи is_user_logged_in(). Используйте сеансы. – rrrfusco

ответ

1

Вы должны использовать заголовок Wordpress, потому что эта функция находится в ядре. Единственный другой вариант - написать свою собственную функцию с тем же именем, используя ту же базу данных пользователей.

0

Вам не нужно включать файл admin-header.php. Просто включите этот файл:

сор-включает/pluggable.php

Этот файл содержит определение is_current_logged_in(), а также множество других помощников пользовательских данных, таких как wp_set_current_user(), wp_get_current_user() и т.д.

+0

привет, извините, я совершенно новичок в php и еще много чего. Не могли бы вы рассказать мне, что я могу скопировать/вставить в мой html-файл без wp? – GreatestSwordsman

+0

Подождите, вы хотите использовать эту функцию вне WordPress? – garyc40

+0

Да, это на странице html, расположенной в корневом каталоге wordpress, но это не часть wordpress, juts что-то я сделал в блокноте – GreatestSwordsman

0

В том числе wp-load.php - лучший способ пойти. Есть множество способов обойти это, но я использую что-то похожее на следующее:

$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); 
    } 
} 

Это немного рубить, и если вы на самом деле знаете местоположение файла сор-load.php, то вы можете просто используйте это в функции require_once().

Поместите это в начало вашего файла, и вы сможете использовать все функции WordPress на своей странице, отличной от Wordpress.

+0

Почему включение wp-load связывает этот метод ? Обычно вы знаете местоположение файла wp-load ... – brokedid

+0

Потому что иногда вы этого не делаете? Скажите, что вы разрабатываете тему или плагин для других? Если вам нужно загрузить функции WP, вам необходимо загрузить WP. Существует не «аккуратный» способ сделать это, если вы не знаете, где находится файл wp-load.php. Вы можете делать запросы ajax, не делая этого, но если вам нужны такие функции, как запрошенный OP, то на данный момент этот уродливый способ делать вещи - это путь вперед, если вы не знаете, где находится файл. – RichardTape

1

Вы должны загрузить Wordpress Core в свой текущий скрипт. Вы можете сделать это следующим образом:

//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!'); 
Смежные вопросы