অ্যাডমিনে post.php এ থাকাকালীন আমি বর্তমান পোস্টের ধরনটি কীভাবে জানতে পারি?


11

আমি যদি অ্যাডমিন_ইনিট হুক দিয়ে কিছু করার চেষ্টা করি তবে - এবং কেবল যদি - ব্যবহারকারী "ইভেন্ট" পোস্টের ধরণের সাথে একটি পোস্ট (post.php) সম্পাদনা করছেন। আমার সমস্যাটি হ'ল, যদিও ওয়ার্ডপ্রেস একটি বৈশ্বিক চলক কলগুলিতে points post_type পয়েন্ট করে। যদি আমি করি:

global $post_type;
var_dump($post_type);

এটি NULL ফেরত দেয়।

তবে আমি যদি এটি করি:

global $pagenow;
var_dump($pagenow);

এটি আমার বর্তমান পৃষ্ঠাটি ফেরত দেয়। অর্থাত্ "post.php"।

আমি এই ফাংশনটি সন্ধান করেছিলাম $screen = get_current_screen();তবে অ্যাডমিন_নিট হুকগুলি সঞ্চালনের পরে এবং তার পরে দেরীতে না হওয়া পর্যন্ত ঘোষণা করা হয় না।

সুতরাং আমার প্রশ্নটি হল, আমি কীভাবে অ্যাডমিন_ইনিট চালানোর সময়, বর্তমান পোস্টটি সম্পাদনা করা হচ্ছে কোন পোষ্টের টাইপটি সন্ধান করব। যদি ইউআরএলটি হয় post.php?post=81&action=editতবে আমি কীভাবে জানব যে পোস্ট টাইপ = 81 কী?

ধন্যবাদ মাল্থে


কি global $post?
সিসির

বিশ্বব্যাপী পোস্টটি এখনও অ্যাডমিন_ইনিট হুকটিতে পাওয়া যায় না
মালিবুর

উত্তর:


21
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    // if the post type is 'event' do something
    if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
        // Do something
    }
}

কোনও বিদ্যমান পোস্ট সম্পাদনা করার সময় url হ'ল '/wp-admin/post.php?post=81&action=edit'
মালিবুর

ঠিক আছে এখনই স্থির ... যদিও আপনার এটি করতে
ডিবিকে

1
দয়া করে আপনার কোড কী করে তার একটি ব্যাখ্যা যুক্ত করুন
পিটার গুজন

এমনকি 2018 সালে একটি খুব সহায়ক!
LoicTheAztec

কোডের উত্তরগুলি খুব কার্যকর নয়। উপরে @ পিটারগুজন কমেন্ট দেখুন, ~ 5 বছর আগে থেকে ....
র্যান্ডম_উজার_নেম

0

আমি MiCc83 এর উত্তরটি প্রসারিত করতে যাচ্ছি। কয়েকটি জিনিস রয়েছে যা ওপির মূল প্রশ্নগুলি অনুসরণ করে না তবে সামগ্রিকভাবে এটি একটি দুর্দান্ত সমাধান। উদাহরণস্বরূপ, এটি কোনও পোস্ট-টাইপ ইভেন্টের সাথে কাজ করবে না কারণ আপনি উত্তরে পোস্ট_ টাইপটিকে 'পোস্ট' হিসাবে পরীক্ষা করছেন।

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    if ( 'post.php' === $pagenow && isset($_GET['post']) ){
        $post_id = $_GET['post'];

        // Do something with $post_id. For example, you can get the full post object:
        $post = get_post($post_id);

    }
}

'post' === get_post_type( $_GET['post'] )পূর্ববর্তী উত্তরের শর্তটি কোনও পোস্ট ইভেন্ট 'ইভেন্ট' এ কাজ করা থেকে বিরত করবে would আপনাকে 'পোস্ট' এর পরিবর্তে 'ইভেন্ট' পোস্টের জন্য পরীক্ষা করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.