নতুন পোস্ট তৈরি করার আগে বিভাগ পছন্দ পছন্দ?


11

নতুন পোস্ট তৈরি করার সময় আমি কীভাবে ব্যবহারকারীকে প্রথমে কোনও বিভাগ বাছতে বাধ্য করতে পারি? আমি কিছু ডিফল্ট সামগ্রী সেট করতে চাই , তবে এটি বিভাগের উপর ভিত্তি করে, সুতরাং সম্পাদকটি দেখানোর আগে আমার এটি জানতে হবে (যদি না আমি কিছু অভিনব এজাক্স স্টাফ না করি তবে এই ক্ষেত্রে আমি এটি করতে চাই না)।

উত্তর:


11

আমি এটি হুক করে post-new.phpএবং একটি category_idঅনুরোধ পরামিতি পরীক্ষা করে সমাধান করেছি । যদি এটির অস্তিত্ব না থাকে তবে আমি এই পৃষ্ঠাটিতে জমা দেওয়া বিভাগ বিভাগের সাথে একটি ফর্ম প্রদর্শন করি এবং তারপরে কল করি exit()যাতে নিয়মিত পোস্ট ফর্মটি প্রদর্শিত না হয়। যদি এটি বিদ্যমান থাকে তবে আমি এর জন্য একটি হুক সেট আপ wp_insert_postকরব যাতে বিভাগটি যুক্ত হবে। এই কাজ করে কারণ একটি নতুন পোস্ট ইতিমধ্যে মাধ্যমে ডাটাবেসের মধ্যে তৈরি করা হয় ফাংশন , এবং আমরা আরও, ট্যাগ, বা অন্যান্য (মেটা) সামগ্রী যোগ করতে পারেন। ফর্মটি এর পরে "নতুন" নতুন সামগ্রীর সাথে রেন্ডার করা হয়।get_default_post_to_edit()

add_filter( 'load-post-new.php', 'wpse14403_load_post_new' );
function wpse14403_load_post_new()
{
    $post_type = 'post';
    if ( isset( $_REQUEST['post_type'] ) ) {
        $post_type = $_REQUEST['post_type'];
    }

    // Only do this for posts
    if ( 'post' != $post_type ) {
        return;
    }

    if ( array_key_exists( 'category_id', $_REQUEST ) ) {
        add_action( 'wp_insert_post', 'wpse14403_wp_insert_post' );
        return;
    }

    // Show intermediate screen
    extract( $GLOBALS );
    $post_type_object = get_post_type_object( $post_type );
    $title = $post_type_object->labels->add_new_item;

    include( ABSPATH . 'wp-admin/admin-header.php' );

    $dropdown = wp_dropdown_categories( array(
        'name' => 'category_id[]',
        'hide_empty' => false,
        'echo' => false,
    ) );

    $category_label = __( 'Category:' );
    $continue_label = __( 'Continue' );
    echo <<<HTML
<div class="wrap">
    <h2>{$title}</h2>

    <form method="get">
        <table class="form-table">
            <tbody>
                <tr valign="top">
                    <th scope="row">{$category_label}</th>
                    <td>{$dropdown}</td>
                </tr>
                <tr>
                    <td></td>
                    <th><input name="continue" type="submit" class="button-primary" value="{$continue_label}" /></th>
            </tbody>
        </table>
        <input type="hidden" name="post_type" value="{$post_type}" />
    </form>
</div>
HTML;
    include( ABSPATH . 'wp-admin/admin-footer.php' );
    exit();
}

// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
    wp_set_post_categories( $post_id, $_REQUEST['category_id'] );
}

খুশী হলাম। আমি শীঘ্রই অনুরূপ কিছু করার দরকার পড়ছি এবং আমি কীভাবে এটি করব তা ভাবছি!
মাইকস্কিঙ্কেল

দুঃখিত, তবে এটি কার্যকর নয় - আমি পোস্ট-নতুন.এফপি-তে পাঠ্য যুক্ত করেছি তবে কিছুই ঘটে না। কোন ধারনা ? ধন্যবাদ

1
@ কিরো: আপনার এই কোডটি যুক্ত করা উচিত নয় post-new.php, তবে আপনার থিমের functions.phpবা কোনও প্লাগইন ফাইলে।
জান ফ্যাব্রি

@ জনফ্যাব্রি দুর্দান্ত সমাধান। আমি যা খুঁজছি ধন্যবাদ!
rofflox

কোডের দুর্দান্ত বিটটি আমি কিছু পোস্ট বিভাগে কিছু ডিফল্ট স্টাইলিং যুক্ত করতে আমার মাল্টিসাইটে এটি ব্যবহার করছি। আশ্চর্যজনক "অ্যাডমিনিস্ট" প্লাগইন সহ সাইটগুলিতে এটি ব্যবহার করার সময় আমি একটি সামান্য সমস্যার মধ্যে পড়েছিলাম, যা "অবৈধ পোস্টের ধরণের" ত্রুটি ফেলেছিল। প্লাগইন লেখক "// এক্সট্র্যাক্ট (LO গ্লোবালস)" মন্তব্য করার পরামর্শ দিয়েছেন ; লাইন এবং এটি সমস্যার সমাধান।
স্পিডপ্যানকেকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.