বিভাগে কাস্টম ক্ষেত্র যুক্ত করুন


22

আমি একটি নির্দিষ্ট বিভাগে কাস্টম ক্ষেত্রগুলি যুক্ত করতে চাই। একটি বিভাগে কেবল নিম্নলিখিত ক্ষেত্র রয়েছে:

নাম:

স্লাগ্:

মূল:

বর্ণনা:

যেহেতু আমার কাছে একটি টিভি সিরিজ সাইট রয়েছে, আমি আরও কিছু ক্ষেত্র যুক্ত করতে চাই, যখন আমি একটি নতুন বিভাগ তৈরি করি (বিভাগ = সিরিজ)

নাম:

শিল্পী:

বছর:

টাইপ করুন:

জেনার:

সারাংশ:

স্লাগ্:

মূল:

বর্ণনা:

এবং আরও ...

কোন সাহায্য দয়া করে? আগাম ধন্যবাদ.



এটি করার সময় আমি যে প্রতারণাপূর্ণ ব্যবহার করি তা এখানে। এটিতে একটি সংক্ষিপ্ত তালিকায় প্রাসঙ্গিক ক্রিয়া হুক এবং ফিল্টার রয়েছে। Charlestonsw.com/…
ল্যান্স ক্লিভল্যান্ড

উত্তর:


24

আমি এটি সম্পর্কে একটি সপ্তাহ আগে পোস্ট করেছি http://en.bainternet.info/2011/wordpress-category-extra-fields

আশাকরি এটা সাহায্য করবে.

ওহদ।


পোস্টের বিশদটি এখানে:

প্রথম জিনিসটি আমাদের করা দরকার হুক edit_category_for_fields ব্যবহার করে বিভাগ সম্পাদনা ফর্মের অতিরিক্ত ক্ষেত্রগুলি যুক্ত করা এবং আমরা একটি সাধারণ ফাংশন ব্যবহার করব যা অতিরিক্ত ক্ষেত্রগুলি মুদ্রণ করবে।

<?php
//add extra fields to category edit form hook
add_action ( 'edit_category_form_fields', 'extra_category_fields');

//add extra fields to category edit form callback function
function extra_category_fields( $tag ) {    //check for existing featured ID
    $t_id = $tag->term_id;
    $cat_meta = get_option( "category_$t_id");
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Image Url'); ?></label></th>
<td>
<input type="text" name="Cat_meta[img]" id="Cat_meta[img]" size="3" style="width:60%;" value="<?php echo $cat_meta['img'] ? $cat_meta['img'] : ''; ?>"><br />
        <span class="description"><?php _e('Image for category: use full url with '); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra1]" id="Cat_meta[extra1]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra1'] ? $cat_meta['extra1'] : ''; ?>"><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra2"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra2]" id="Cat_meta[extra2]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra2'] ? $cat_meta['extra2'] : ''; ?>"><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra3"><?php _e('extra field'); ?></label></th>
<td>
        <textarea name="Cat_meta[extra3]" id="Cat_meta[extra3]" style="width:60%;"><?php echo $cat_meta['extra3'] ? $cat_meta['extra3'] : ''; ?></textarea><br />
        <span class="description"><?php _e('extra field'); ?></span>
    </td>
</tr>
<?php
}

আপনি দেখতে পাচ্ছেন যে আমি 4 টি নতুন ক্ষেত্র যুক্ত করেছি এবং সেগুলি সমস্ত একটি অ্যারে ক্যাট_মেটা [কী] এ রয়েছে কারণ আমরা কেবলমাত্র প্রতিটি ক্ষেত্রের জন্য একটি সারির পরিবর্তে বিভাগের সমস্ত অতিরিক্ত ক্ষেত্রগুলি সংরক্ষণ করতে বিকল্প টেবিলে সারি তৈরি করি।

এর পরে আমাদের অতিরিক্ত ক্ষেত্রগুলি ডেটাবেজে সংরক্ষণ করতে হবে যখন কোনও ব্যবহারকারী একবার বিভাগ সম্পাদনা ফর্ম জমা দেয় এবং আমরা তা করি যে "এডিটেড_ক্যাটগরি" ব্যবহার করে একটি ফাংশন যা প্রতিটি জমা ক্ষেত্রের মধ্য দিয়ে চলবে এবং আপডেট_পশন ফাংশনটি ব্যবহার করে ডাটাবেসে সন্নিবেশ করিয়ে দেবে , এটার মত:

<?php
// save extra category extra fields hook
add_action ( 'edited_category', 'save_extra_category_fileds');

// save extra category extra fields callback function
function save_extra_category_fileds( $term_id ) {
    if ( isset( $_POST['Cat_meta'] ) ) {
        $t_id = $term_id;
        $cat_meta = get_option( "category_$t_id");
        $cat_keys = array_keys($_POST['Cat_meta']);
            foreach ($cat_keys as $key){
            if (isset($_POST['Cat_meta'][$key])){
                $cat_meta[$key] = $_POST['Cat_meta'][$key];
            }
        }
        //save the option array
        update_option( "category_$t_id", $cat_meta );
    }
}

উপরের কোড থেকে আপনি দেখতে পাচ্ছেন যে আমরা যে অতিরিক্ত অতিরিক্ত ক্ষেত্রগুলি যুক্ত করেছি সেগুলি সমস্তই 'বিভাগ_ID' নামে ডাটাবেসের বিকল্প টেবিলে সঞ্চিত রয়েছে, যেখানে আইডি আমরা সুনির্দিষ্ট সম্পাদিত নির্দিষ্ট বিভাগের আইডি এবং এর অর্থ আমরা এটিকে কল করতে পারি get_option ফাংশনটি সহজেই আমাদের প্লাগইনস বা থিম ফাইলগুলিতে ডেটা।

উদাহরণস্বরূপ বলুন আমার বিভাগের আইডি 25 এর পরে আমার কোডটি দেখতে পাবেন

<?php $cat_data = get_option('category_25'); ?>

আমি প্রথমদিকে যেমন বলেছি, প্রতিটি বিভাগের জন্য আমার আলাদা চিত্র প্রদর্শন করা দরকার, সুতরাং সেই ক্ষেত্রে আমি আমার থিমের বিভাগে এই কয়েকটি লাইন কোডটি যুক্ত করেছি। বিভাগের ঠিক পরে বিভাগের শিরোনাম প্রদর্শন করে যে কোডটি:

<?php
//first get the current category ID
$cat_id = get_query_var('cat');

//then i get the data from the database
$cat_data = get_option("category_$cat_id");

//and then i just display my category image if it exists
if (isset($cat_data['img'])){
    echo '<div class="category_image"><img src="'.$cat_data['img'].'"></div>';
}

সুন্দর এবং সহজ এবং আমরা সব সম্পন্ন করেছি। ফলাফলটি এর সাথে দেখতে হবে:

এখানে চিত্র বর্ণনা লিখুন


4
এই উত্তরটিতে আপনার ব্লগের মূল বিষয়বস্তু পোস্ট করুন। লিঙ্ক পচা এমনকি আপনার নিজের ব্লগেও ঘটতে পারে।
জাজানো রাইনহার্ট

1
এটি 2011 বন্ধুকে উত্তর দেওয়া হয়েছিল :)
বাইনারনেট

1
আপনার বক্তব্য হচ্ছে?
জাজানো রাইনহার্ট

4
আপনি যদি মনে করেন না যে এই উত্তরটির কোনও মান আছে তবে এটি মুছে ফেলা উচিত ... তবে এই প্রশ্নের 16,000 টিরও বেশি ভিউ রয়েছে। আমি মনে করি এটির বয়স হওয়া সত্ত্বেও প্রশ্নটি মানুষের পক্ষে কার্যকর রয়েছে এবং প্রশ্নের উত্তরটিতে লিখিত বিবরণ যুক্ত করে এই উত্তরটি উন্নত হবে।
জাজানো রাইনহার্ট

4
... যখন আপনি ছেলেরা এটি নিয়ে বিতর্ক করতে ব্যস্ত ছিলেন (যদিও এক বছর আগে), আমার কাছে সমস্ত কিছু উত্তরে আনতে 5 মিনিটেরও কম সময় লাগেনি। এটি সহজ ...
এমএক্সমাস্টমিলস

19

ওয়ার্ডপ্রেস ৪.৪ অনুসারে, add_term_meta () , update_term_meta () এবং get_term_meta () ফাংশন যুক্ত করা হয়েছে। এর অর্থ হল যে এমএক্স্মাস্টামিলস দ্বারা সরবরাহিত কোডটি খুব কম হ্যাকি পদ্ধতির ব্যবহার করতে আপডেট করা যেতে পারে।

এটি আমার আপডেট এখানে। আমি কেবলমাত্র একটি কাস্টম শিরোনাম যুক্ত করতে চাইলে একটি ক্ষেত্র রয়েছে তবে আপনি যে ক্ষেত্রগুলি যুক্ত করতে চান তা একই কাজ করবে'll

function addTitleFieldToCat(){
    $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true);
    ?> 
    <tr class="form-field">
        <th scope="row" valign="top"><label for="cat_page_title"><?php _e('Category Page Title'); ?></label></th>
        <td>
        <input type="text" name="cat_title" id="cat_title" value="<?php echo $cat_title ?>"><br />
            <span class="description"><?php _e('Title for the Category '); ?></span>
        </td>
    </tr>
    <?php

}
add_action ( 'edit_category_form_fields', 'addTitleFieldToCat');

function saveCategoryFields() {
    if ( isset( $_POST['cat_title'] ) ) {
        update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']);
    }
}
add_action ( 'edited_category', 'saveCategoryFields');

2
কয়েকটি বিষয় লক্ষণীয়: edited_categoryহুকের tag_IDমধ্যে, $_POSTঅ্যারেতে থাকবে, এর মধ্যে নয় $_GET। এছাড়াও add_term_metaআসলে একটি সম্ভাব্য পুরানো এক অগ্রাহ্য পরিবর্তে একটি নতুন এনট্রি যোগ করা হবে। update_term_metaপরিবর্তে ব্যবহার করুন।
মার্টিন দিমিত্রভ 22

@ মার্টিনডিমিট্রভ আপনি সম্পাদনা বোতামে ক্লিক করে লুক-সিমনের উত্তর ঠিক করতে পারবেন? এই পদ্ধতিতে সবাই উপলব্ধ সেরা কোডটি ব্যবহার করতে পারেন, এমনকি যিনি খুব ভাল কোড করেন না (এখানে ডিজাইনার!)। ধন্যবাদ!
হুগো

1
এটি ফর্মটিতে ডেটা সংরক্ষণ করে না
দেব

@ ডেভ এটি ডেটা সংরক্ষণ করে, আপনি যদি দ্বিতীয় লাইনে $ _POST থেকে $ _GET না পরিবর্তন করেন তবে এটি এটি প্রদর্শিত হবে না।
বনস্টো

3

এই কোড কাজ:

add_action ( 'edit_category_form_fields', function( $tag ){
    $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?>
    <tr class='form-field'>
        <th scope='row'><label for='cat_page_title'><?php _e('Category Page Title'); ?></label></th>
        <td>
            <input type='text' name='cat_title' id='cat_title' value='<?php echo $cat_title ?>'>
            <p class='description'><?php _e('Title for the Category '); ?></p>
        </td>
    </tr> <?php
});
add_action ( 'edited_category', function() {
    if ( isset( $_POST['cat_title'] ) )
        update_term_meta( $_POST['tag_ID'], '_pagetitle', $_POST['cat_title'] );
});

এটি অন্য একের চেয়ে কম আনাড়ি এবং আমি কেবল এটি ওয়ার্ডপ্রেস
5.2.2

1

পল মেনার্ড কীভাবে তার ব্লগে টার্ম মেটা তৈরি করবেন এবং ব্যবহার করবেন তার একটি উদাহরণ দিয়েছিলেন ...
ওয়ার্ডপ্রেস in.০-তে নতুন ট্যাক্সনোমির জন্য কাস্টম মেটা

ডিবি টেবিল তৈরি করার বা $_POSTভার্স পরীক্ষা করার কোনও উদাহরণ নেই , সুতরাং আপনাকে সেই ছোট জিনিসগুলি নিজেই করা দরকার তবে এটি শীর্ষে তৈরি করার জন্য একটি শালীন কোড বেসের মতো দেখাচ্ছে ... :)

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