প্রোগ্রামাক্রমে কাস্টম ফিল্ড ড্রপডাউন "নতুন যুক্ত করুন" বিকল্পগুলি যুক্ত করুন


10

কীভাবে আমি "নতুন যুক্ত করুন" কাস্টম ফিল্ড ড্রপডাউনতে প্রাক-সংজ্ঞায়িত বিকল্পগুলি যুক্ত করতে পারি?

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

নতুন কাস্টম ক্ষেত্রগুলি স্বয়ংক্রিয়ভাবে যুক্ত এবং দেখানোর দুটি উদাহরণ এখানে:

  1. ওয়ার্ডপ্রেস: নতুন পোস্টে ডিফল্ট কাস্টম ফিল্ড যুক্ত করা হচ্ছে
  2. স্বয়ংক্রিয় কাস্টম ক্ষেত্র তৈরি করুন

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

আমি প্লাগিন ব্যবহার না করে এটি কীভাবে করব তা জানতে চাই।


আপনার যদি নির্দিষ্ট ক্ষেত্রগুলি পূরণ করতে হয় তবে কাস্টম মেটাবক্স ব্যবহার করবেন না কেন? সেখানে বিকল্প একটি অনেক আছে সেখানে সহজে এই কাজ করার জন্য: মেটা বক্স, ডাব্লু রসায়ন, উন্নত কাস্টম ক্ষেত্র, ইত্যাদি
helgatheviking

টিপসটির জন্য ধন্যবাদ! আমি এই বিকল্পগুলি পরীক্ষা করব ( মেটা বক্স , ডাব্লুপি অ্যালকেমি এবং অ্যাডভান্সড কাস্টম ফিল্ডস ); যারা দেখতে সত্যিই সুন্দর! সত্যি বলতে, আমি বেশিরভাগই কৌতূহল করছি যে আমি প্লাগিনটি ব্যবহার না করে কীভাবে এটি করব কারণ আমি ন্যূনতম থাকি এবং আমার যে সমস্যার সমাধান করতে হবে তার জন্য একটি প্লাগিন ব্যবহার করা এড়াতে চাই (আমি জানি যদি দ্রুত প্লাগইনগুলি কীভাবে তৈরি করতে পারে তবে আমি (যেমন, আমাকে ) যত্নশীল নয়)। : ডি
mululse

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

ধন্যবাদ! দুর্দান্ত পরামর্শ! এই প্রকল্পের জন্য আমাকে আরও কতটা মেটা বক্স টুইট করতে হবে তার উপর নির্ভর করে আমি রাস্তায় প্লাগইন ব্যবহার করতে পারি। সাহায্য / লিঙ্ক / পরামর্শের জন্য আবার ধন্যবাদ, আমি সত্যিই এটি প্রশংসা করি!
mululse

এফওয়াইআই, আমার মতো একই নৌকায় অন্য কারও কাছে: ডাব্লুপি আলকেমি প্রোগ্রামারদের জন্য তৈরি দৃষ্টিকোণ থেকে নিখুঁতভাবে দেখায়; উপরে তালিকাভুক্ত তিনটির মধ্যে, আমি মনে করি যে কারণে ডাব্লুপি আলকেমিকে আমি সবচেয়ে পছন্দ করি। অন্যরাও দেখতে সত্যিই দুর্দান্ত, তবে আমি যতটা সম্ভব কোডের কাছাকাছি থাকতে পছন্দ করি। যদিও লক্ষ করার মতো কিছু, আমি নিশ্চিত নই যে ডাব্লুপি আলকেমি বা অন্যরা স্টক কাস্টম ফিল্ড ড্রপডাউনটিতে ডিফল্ট বিকল্পগুলি যুক্ত করতে পারে কিনা। যদি আমি একটি বা সমস্ত ব্যবহার করে শেষ করি তবে আমি এখানে নিশ্চয়তার সাথে পোস্ট করব (বা অন্য কেউ যদি নিশ্চিত করতে পারে তবে তা দুর্দান্ত হবে!)
মুলসে

উত্তর:


4

আপনি খাঁটি পিএইচপি দিয়ে এটি করতে পারবেন না, কারণ ক্ষেত্রগুলি বিদ্যমান ক্ষেত্রগুলি থেকে নেওয়া হয়েছে এবং কোনও হুক নেই। তবে আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন, পোস্টের ধরণটি কাস্টম ক্ষেত্রগুলিকে সমর্থন করে এবং ক্ষেত্রটি ইতিমধ্যে বিদ্যমান নেই কিনা তা পরীক্ষা করে দেখতে পারেন - এবং এটি সন্নিবেশ করান:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: Extend custom fields */

add_action( 'admin_footer-post-new.php', 'wpse_98269_script' );
add_action( 'admin_footer-post.php', 'wpse_98269_script' );

function wpse_98269_script()
{
    if ( ! isset ( $GLOBALS['post'] ) )
        return;

    $post_type = get_post_type( $GLOBALS['post'] );

    if ( ! post_type_supports( $post_type, 'custom-fields' ) )
        return;
    ?>
<script>
    if ( jQuery( "[value='demo_data']" ).length < 1 ) // avoid duplication
        jQuery( "#metakeyselect").append( "<option value='demo_data'>demo_data</option>" );
</script>
    <?php
}

ওহ, দুর্দান্ত! এখন চেষ্টা করে, ধন্যবাদ! (+1) একবার পরীক্ষার পরে উত্তর হিসাবে চিহ্নিত করতে ফিরে আসব। কৌতুহলের বাইরে, এর পেছনের অর্থ কী # -*- coding: utf-8 -*-? এই মন্তব্য শৈলী ওয়ার্ডপ্রেস বিশেষ কিছু মানে? ধন্যবাদ!!!! :)
mululse

@ মিকিহুলস # -*- coding: utf-8 -*-একটি এনকোডিং কুকি , এটি ফাইল এনকোডিং সনাক্ত করতে সম্পাদকদের সহায়তা করে। ভিম, স্কাইট এবং আরও কিছু সম্পাদক এটি পড়বেন। আমার স্ট্যান্ডার্ড পিএইচপি টেম্পলেট অংশ।
ফুসিয়া

পুরোপুরি কাজ করে! আমি আপনার কোডটিতে তৈরি কিছু টুইটের সাথে আমার পোস্টটি আপডেট করেছি ( <select>এটি ইতিমধ্যে উপস্থিত না থাকলে আমাকে তৈরি করতে হয়েছিল )। সহায়তার জন্য অনেক ধন্যবাদ, আমি সত্যই এটির প্রশংসা করি !!!!!
mululse

... এবং এনকোডিং কুকির তথ্যের জন্য ধন্যবাদ , আমি এটি আগে দেখিনি। অনেক প্রশংসিত.
mululse

2
function add_predefined_custom_field_names( $query ) {
    $predefined = array(
        'www.cyberxoft.com'
    );

    global $table_prefix;

    $query = preg_replace('/[\r\n\t]/', ' ', $query); //minify by removing all tabs and line breaks
    $query = preg_replace('/\s+/', ' ', $query); //minify by replacing spaces, tabs and carriages to single space

    //SELECT meta_key FROM wp_postmeta GROUP BY meta_key HAVING meta_key NOT LIKE '\\_%' ORDER BY meta_key LIMIT 30
    $pattern = ("/SELECT meta_key FROM ".$table_prefix."postmeta/i");   

    if( preg_match($pattern, $query) ) {
        $keys = '';     

        foreach($predefined as $key){$keys .= (" UNION SELECT '$key' AS meta_key");}        

        $query = preg_replace('/SELECT/i', 'SELECT meta_key FROM (SELECT', $query);
        $query = preg_replace('/FROM wp_postmeta/i', ('FROM wp_postmeta'.$keys), $query);
        $query = preg_replace('/ GROUP BY/i', ')t GROUP BY', $query);
    }

    return $query;
}
add_filter('query', 'add_predefined_custom_field_names');

আপনার থিমস ফাংশন.পিপিতে যে কোনও জায়গায় উপরের কোডটি যুক্ত করুন। আপনি উপরের কোডটি যুক্ত করার পরে এটি নির্বাচন করার বিকল্পগুলির মধ্যে একটি হিসাবে ড্রপ ডাউনকে 'www.cyberxoft.com' যুক্ত করবে।

যদি আপনি এটি দেখতে পান, তবে কেবলমাত্র আপনার প্রয়োজনীয় ক্ষেত্রের নামের সাথে 'www.cyberxoft.com' প্রতিস্থাপন করুন এবং প্রশাসক পৃষ্ঠাটি রিফ্রেশ করুন এবং আপনি যখন যা দেখেন ঠিক তখনি এগিয়ে যান এবং যতগুলি আপনার পছন্দ মতো যুক্ত করুন তবে মনে রাখবেন যে কেবল 30 টি হতে পারে এটির জন্য ডিফল্ট সীমা সেট করা হিসাবে দেখা হয়েছে।

উপভোগ করুন ...


1

নীচে @ টসচো পোস্ট করা দুর্দান্ত স্ক্রিপ্টটির একটি পরিবর্তিত সংস্করণ রয়েছে । আমি এটি তৈরি করার সক্ষমতা প্রয়োজন <select>যদি এটি ইতিমধ্যে বিদ্যমান না ছিল।

/**
 * Programatically add custom fields.
 *
 * @see http://wordpress.stackexchange.com/questions/98269/programatically-add-options-to-add-new-custom-field-dropdown/
 */

function wpse_98269_script() {

    if (isset($GLOBALS['post'])) {

        $post_type = get_post_type($GLOBALS['post']);

        if (post_type_supports($post_type, 'custom-fields')) {

            ?>

                <script>

                    // Cache:
                    var $metakeyinput = jQuery('#metakeyinput'),
                        $metakeyselect = jQuery('#metakeyselect');

                    // Does the default input field exist and is it visible?
                    if ($metakeyinput.length && ( ! $metakeyinput.hasClass('hide-if-js'))) {

                        // Hide it:
                        $metakeyinput.addClass('hide-if-js'); // Using WP admin class.

                        // ... and create the select box:
                        $metakeyselect = jQuery('<select id="metakeyselect" name="metakeyselect">').appendTo('#newmetaleft');

                        // Add the default select value:
                        $metakeyselect.append('<option value="#NONE#">— Select —</option>');

                    }

                    // Does "demo_data" already exist?
                    if (jQuery("[value='demo_data']").length < 1) {

                        // Add option:
                        $metakeyselect.append("<option value='demo_data'>demo_data</option>");

                    }

                </script>

            <?php

        }

    }

}

add_action('admin_footer-post-new.php', 'wpse_98269_script');
add_action('admin_footer-post.php', 'wpse_98269_script');

আমি নিশ্চিত যে আমার জেএস অভিযোজনগুলি উন্নত হতে পারে তবে এটি কাজটি করে। আমি যদি পরিবর্তন / উন্নতি করি তবে আমি এখানে আপডেট কোড পোস্ট করব।

ধন্যবাদ আবার @ টসচো !!!! আমি তোমার এক ণী :)

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