लूप के बाहर लेखक आईडी प्राप्त करें


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 को गतिशील रूप से लोड किया जाना चाहिए।
थ्रिऑन

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

इस फ़ंक्शन के साथ मैं पोस्ट एडिट स्क्रीन में पोस्ट लेखक ई-मेल प्रदर्शित करने में सक्षम था। अभी भी पता नहीं है कि यह कस्टम मेटा फ़ील्ड के साथ कैसे काम करता है, लेकिन मुझे लगता है कि मैं अब करीब हूं।


यह आपका अपना प्रश्न भी है। आप इसे स्पष्ट करने के लिए संपादित कर सकते हैं।
फनविलालोस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.