2016-02-11 4 views
1

У меня есть эта функция внутри моего файла functions.php в моей теме: образец кода ......WordPress: get_post() внутри функции

function getTheAuthor($x) { 
global $post; 
$post = get_post($x); 
$author_name = get_author_name($post->post_author); 
return 'author: '.$author_name; 
} 

конец образца кода так, $ x - строка (допустим, «375») , если я изменю строку на $ post = get_post (375); все работает нормально, , если я оставлю строку $ post = get_post ($ x), я получаю нулевой объект .... Если я попытаюсь преобразовать $ x в целое число, он преобразует эту строку в ноль. --- и intval ($ x) = 0; Что мне здесь не хватает?

Спасибо за любую помощь

+0

ps делает var_dump дает мне эту информацию о $ x .... string (18) «375», делая var_dump intval ($ x), дает мне это: int (0) – user924011

+0

Есть уже функция для получения post author: https://codex.wordpress.org/Function_Reference/get_the_author – rnevius

+0

Да, я знаю об этом, но у меня нет объекта post внутри этой функции, только идентификатор # сообщения. .. – user924011

ответ

0

Там есть лучший способ сделать это (и, в любом случае, вы не должны global $post, так как вы передаете идентификатор поста функции). Автор сообщения хранится как мета-поле сообщения с ключом post_author. В результате, вы можете использовать следующие вернуть автору ID поста:

$post_author_id = get_post_field('post_author', $post_id); 

Так что в вашем случае, я хотел бы использовать:

function getTheAuthor($post_id) { 
    $post_author_id = get_post_field('post_author', $post_id); 
    // get_author_name() is deprecated... 
    $author_name = get_the_author_meta('display_name', $post_author_id); 
    return 'author: ' . $author_name; 
} 

Подробнее о get_the_author_meta()in the Codex.

+0

Было бы полезно, если бы у меня был объект post ... но у меня есть переменная с именем $ x, которая равна 375 – user924011

+0

. Это не имеет значения ... тогда вы бы использовали 'echo getTheAuthor ($ x) '. '$ post_id' - это просто параметр. Вам не нужно указывать свою переменную. – rnevius

+0

Я думаю, что проблема связана с этим .... ПОЧЕМУ ЯВЛЯЕТСЯ ИНДИВОМ $ x = 0? var_dump of $ x = ..... string (18) "375" var_dump of intval ($ x) = ...... int (0) – user924011

Смежные вопросы