গতিশীল উইজেট ফর্ম ক্ষেত্র যুক্ত করা


11

আমি গতিশীলভাবে ওয়ার্ডপ্রেস উইজেটে ফর্ম ফিল্ড যুক্ত করার চেষ্টা করছি। ব্যবহারকারী যদি কোনও ইভেন্টে অন্য তারিখ যুক্ত করতে চান তবে তারা আরও ক্ষেত্র পেতে বোতামটি ক্লিক করতে পারেন।

প্রশ্নটি হল: নতুনভাবে তৈরি ইনপুট ক্ষেত্রগুলি কীভাবে আমার ডাটাবেসে সংরক্ষণ করবেন? আমার কি কাস্টম আপডেট ফাংশন লিখতে হবে? কোন টিপস?

উইজেটটি এইভাবে দেখায়: এখানে চিত্র বর্ণনা লিখুন

এটি উইজেটের জন্য আমার পিএইচপি কোড (এখন অবধি):

    class Spillelister extends WP_Widget {

    public function Spillelister() {

        $widget_options = array (
            'classname' => 'spillelister-widget',
            'description' => 'Widget for å illustrere spillelister.');

        parent::WP_Widget('spillelister_widget', 'Spilleplan', $widget_options);
    }

    // The actual widget user interface
    public function widget($args, $instance) {

        extract( $args, EXTR_SKIP);
        $title = ( $instance['title'] ) ? $instance['title'] : 'Spilleplan';
        $body = ( $instance['body'] ) ? $instance['body'] : 'Ingen flere forestillinger';

        ?>

            <?php echo $before_widget; ?>
            <?php echo $before_title . $title . $after_title; ?>
            <p><?php echo $body; ?></p>

        <?php
    }

    public function update() {

    }

    public function form() {
    ?>
        <div class="date_stamp">
        <p>
            <label>Dato</label> <input type="text" class="datepicker">
            <br>
            <label>Tid</label> <input type="text">
            <span class="remove">Remove</span>
        </p>
        </div>
        <p>
            <span class="add">Add fields</span>
        </p>

    <?php 
    }


}

function spillelister_init() {
    register_widget('Spillelister');    
}
add_action('widgets_init', 'Spillelister_init');

কোন টিপস, ইঙ্গিত বা উত্তর প্রশংসা করা হয়। :)


1
আমি জানি যে আমি দেরি করে এসেছি, কিন্তু আমি এই থ্রেডটিতে ঝাঁপিয়ে পড়েছিলাম এবং অন্যটিতে একটি উত্তর পেয়েছি: wordpress.stackexchange.com/questions/94617/… কৌতুকটি অ্যারের হিসাবে মানগুলি ফেরত দেবে বলে মনে হচ্ছে।
আলেকজান্ডারফিলাতভ

উত্তর:


5

মজার প্রশ্ন!
আমি উইজেটগুলিতে পুনরাবৃত্তযোগ্য ক্ষেত্রগুলি কখনও দেখিনি। একটি পূর্ণ উত্তর দেওয়ার জন্য অনেক বেশি কাজ / সময় প্রয়োজন হবে, তাই আমি আমার জানা সংস্থানগুলির জন্য আপনাকে লিঙ্ক দেব এবং আশা করি আপনি এই কাজটি করবেন এবং সমাধানটি আমাদের সাথে ভাগ করে নিবেন;)

এই সমস্ত উদাহরণ মেটা বাক্সগুলির সাথে ডিল করে, আপনাকে jQuery স্ক্রিপ্টগুলি অনুলিপি করতে হবে এবং উইজেটসের post_metaক্ষেত্রে মানিয়ে নিতে হবে ।


ধন্যবাদ! আমি কীভাবে এটি সমাধান করব তা যদি আমি কাজ করে থাকি তবে আমি এটি পরীক্ষা করে দেখেছি এবং একটি উত্তর দেব। আপনি বা অন্য কারও কাছে যদি এই সম্পর্কে আরও কোনও সংস্থান পান তবে দয়া করে এটি ভাগ করতে দ্বিধা করবেন না :)
ওলে হেনরিক স্কোগ্রাস্টম

1
কখনও চেষ্টা করে দেখুন, তবে কেউ যদি এরকম কিছু তৈরি করতে পরিচালিত হয় তবে দয়া করে আপনার সমাধানটি বেলো পোস্ট করুন। :)
ওলে হেনরিক স্কোগ্রস্টম

2

এটি একটি গতিশীল উইজেটের উদাহরণ যা দুটি ক্ষেত্র (চিত্র-আইডি এবং url) সরবরাহ করে। আপনি যদি কোনও চিত্র-আইডি প্রবেশ করেন এবং "আপডেট" টিপেন তবে দুটি নতুন ক্ষেত্র যুক্ত হবে। আমি ইমেজ এবং লিঙ্কযুক্ত ইউআরএলগুলির সাথে একটি চতুর স্লাইডার তৈরি করতে এটি তৈরি করি।

<?php

class imp_image_slider extends WP_Widget
{
/**
 * imp_image_slider constructor.
 */
public function __construct()
{
    parent::__construct(false, $name = "Impulse Image Slider", array("description" => "Creates Slick Image Slider"));
}

/**
 * @see WP_Widget::widget
 *
 * @param array $args
 * @param array $instance
 */
public function widget($args, $instance)
{
// render widget in frontend
}


/**
 * @see WP_Widget::update
 *
 * @param array $newInstance
 * @param array $oldInstance
 *
 * @return array
 */
public function update($newInstance, $oldInstance)
{
    $instance = $oldInstance;
    $instance['images'] = array();
    $instance['urls'] = array();
    if (isset($newInstance['images'])) {
        foreach ($newInstance['images'] as $key => $value) {
            if (!empty(trim($value))) {
                $instance['images'][$key] = $value;
                $instance['urls'][$key] = $newInstance['urls'][$key];
            }
        }
    }

    return $instance;
}

/**
 * @see WP_Widget::form
 *
 * @param array $instance
 */
public function form($instance)
{
    $images = isset($instance['images']) ? $instance['images'] : array();
    $urls = isset($instance['urls']) ? $instance['urls'] : array();
    $images[] = '';
    $form = '';

    foreach ($images as $idx => $value) {
        $image = isset($images[$idx]) ? $images[$idx] : '';
        $url = isset($urls[$idx]) ? $urls[$idx] : '';
        $form .= '<p>'
            . '<label>Slides:</label>'
            . sprintf(
                '<input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat" placeholder="Image ID">',
                $this->get_field_name('images'),
                $idx,
                esc_attr($image))
            . '</p>'
            . '<p>'
            . sprintf(
                '<input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat" placeholder="Url">',
                $this->get_field_name('urls'),
                $idx,
                esc_attr($url))
            . '</p>';
    }

    echo $form;
}
}

add_action('widgets_init', create_function('', 'return register_widget("imp_image_slider");'));

?>

হাই, আপনি কীভাবে মন্তব্য হিসাবে পোস্ট করা কোড ছাড়াও ওপিকে সহায়তা করে সে সম্পর্কে মন্তব্য বা কিছু তথ্য যুক্ত করতে পারেন কেবল উত্তরগুলি নিরুৎসাহিত করা হয়
ব্র্যাভোকেয়েল

1
হাই, আমি ঠিক করেছি। আশা করি এটা সাহায্য করবে.
এইচকেডুল্লা

@ HKandulla আপনাকে অনেক ধন্যবাদ আপনি এবং আপনার কোড আমার জীবন রক্ষাকারী আবারও আপনাকে ধন্যবাদ।
ওওয়াইজ ইউসুফী 3'17
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.