отримати ідентифікатор автора публікації за межами циклу


17

Мені потрібно розмістити в метабоксі панелі інструментів публікації редагування електронною поштою автора (або інші метаполя користувача). Тому його можна редагувати, коли адміністратор переглядає це повідомлення.

$meta_id = get_the_author_meta( 'user_email', $user_id );

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DANE FIRMY',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'E-mail box',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

Цей код працює, коли $ user_id є цілим числом (коли я вручну помістив його, наприклад, 4), але я хочу динамічно отримати поточний ідентифікатор автора ( $user_id).

get_the_author_meta('user_mail')повинен працювати без вказівки $user_id(кодекс говорить, що :)), але код знаходиться в functions.phpциклі і поза ним, тому він не працює. Я починаю з Wordpress та PHP, тому не знаю, що робити далі.

Також спробував це:

global $post;
$user_id=$post->post_author;

Відповіді:



9

Ви можете використовувати наступне:

/**
 * Gets the author of the specified post. Can also be used inside the loop
 * to get the ID of the author of the current post, by not passing a post ID.
 * Outside the loop you must pass a post ID.
 *
 * @param int $post_id ID of post
 * @return int ID of post author
*/
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}

Гм, це не працює для мене - я думаю, функція повинна бути підключена до одного з фільтрів, але не знаю, який.
th3rion

Працює для мене ... ти впевнений, що ти передаєш (дійсний) ідентифікатор допису?
Стівен Гарріс

Але я хочу відобразити це мета-поле в екрані редагування для кожної публікації (не тільки для однієї) та автора публікації може бути різною, тому $ post_id повинен завантажуватися динамічно відповідно до екрана редагування.
th3rion

Встановити $post_idдинамічно. Якщо використовується всередині метабокса, ваш метабокс зворотного виклику передається $postоб'єкту. Отже, ви можете використовувати $post->ID(Ви можете, ймовірно, просто використовувати $post->post_authorдля цього мета.
Стівен Гарріс

1
add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    global $post;
    $author_id=$post->post_author;
    $authord = get_the_author_meta( 'user_email', $author_id);
    echo $authord;
}

За допомогою цієї функції мені вдалося відобразити електронну пошту автора публікації на екрані редагування публікацій. Досі не знаю, як змусити його працювати зі спеціальним метаполем, але я думаю, що зараз я ближче.


Це також ваше власне питання. Ви можете відредагувати його для уточнення.
funtimelost
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.