• Hello, I’m new to develop WordPress plugins. At this time, I’d try to build my own plugin which can be handle testimonials from front-end user. At the current, I have this 2 files of code and it did work to display form in the front-end web page.

    ‘ryadi-testimonial.php’

    /**
     * Plugin Name: Ryadi Testimonial
     */
    
    if(!isset($_SESSION)) session_start();
    if ('ryadi-testimonial.php' == basename($_SERVER['SCRIPT_FILENAME']))
    	die ('Please do not access this file directly. Thanks!');
    
    function ryadi_testimonial_activate()
    {
        global $wpdb;
        $tablename = $wpdb->prefix.'ryadi_testimonial';
        $charset_collate = '';
        if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') )
        {
            if ( ! empty($wpdb->charset) )
                    $charset_collate = " DEFAULT CHARACTER SET $wpdb->charset";
            if ( ! empty($wpdb->collate) )
                    $charset_collate .= " COLLATE $wpdb->collate";
        }
        $sql = "CREATE TABLE IF NOT EXISTS <code>$tablename</code>
        (
           <code>rt_id</code> int(4) UNSIGNED NOT NULL AUTO_INCREMENT,
           <code>rt_date</code> timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
           <code>rt_approved</code> int(1) UNSIGNED NOT NULL,
           <code>rt_name</code> char(100) NOT NULL,
           <code>rt_email</code> char(100) NOT NULL,
           <code>rt_pic_url</code> char(150) NOT NULL,
           <code>rt_testimonial</code> text NOT NULL,
           PRIMARY KEY (<code>rt_id</code>)
        )$charset_collate;";
        require_once ( ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta($sql);
    }
    register_activation_hook( __FILE__, 'ryadi_testimonial_activate' );
    
    function ryadi_testimonial_plugin_setup()
    {
    	require_once( dirname(__FILE__).'/widgets/ryadi-input-testimonial-widget.php' );
    	load_plugin_textdomain('testimonial-basics', false, 'testimonial-basics/languages');
    }
    add_action( 'plugins_loaded','ryadi_testimonial_plugin_setup');

    ‘widgets/ryadi-input-testimonial-widget’

    /*
    Plugin Name: Ryadi Testimonial Input Widget
    */
    
    if(!isset($_SESSION)) session_start();
    
    function ryadi_input_testimonial_widget()
    {
        register_widget ( 'ryadi_input_testimonial_widget' );
    }
    add_action ( 'widgets_init','ryadi_input_testimonial_widget' );
    
    class ryadi_input_testimonial_widget extends WP_Widget
    {
        function ryadi_input_testimonial_widget()
        {
            $widget_ops = array
            (
                'classname' => 'ryadi_input_widget_class',
                'description' => __('This widget will allow a user to input a testimonial.','ryadi-testimonial')
    	);
            $this->WP_Widget( 'ryadi_input_testimonial_widget', __('Testimonial Input Widget','ryadi-testimonial'), $widget_ops );
        }
    
        function form($instance)
        {
            if ($instance)
            {
                $title = esc_attr($instance['title']);
                $text = esc_attr($instance['text']);
                $textarea = esc_textarea($instance['textarea']);
            }
            else
            {
                $title = '';
                $text = '';
                $textarea = '';
            }
    
            ?>
            <p>
            <label for="<?=$this->get_field_id('title'); ?>"><?php _e('Widget Title', 'ryadi-testimonial'); ?></label>
            <input class="widefat" id="<?=$this->get_field_id('title'); ?>" name="<?=$this->get_field_name('title'); ?>" type="text" value="<?=$title; ?>" />
            </p>
    
            <?php
        }
    
        function update($new_instance, $old_instance)
        {
            $instance = $old_instance;
            $instance['title'] = strip_tags($new_instance['title']);
            $instance['text'] = strip_tags($new_instance['text']);
            $instance['textarea'] = strip_tags($new_instance['textarea']);
            return $instance;
        }
    
        function widget($args, $instance)
        {
            extract( $args );
            $title = apply_filters('widget_title', $instance['title']);
            if (isset($_POST['rytitle']))
            {
                $rytitle = trim($_POST['rytitle']);
                $ryname = trim($_POST['ryname']);
                $ryemail = trim($_POST['ryemail']);
                $rytestimonial = trim($_POST['rytestimonial']);
                $ryerror = '';
                if ($rytitle == '' || $ryname == '' || $ryemail == '' || $rytestimonial == '')
                {
                    $ryerror = 'Please fill all required fields';
                }
                else
                {
                    //Do something
                }
            }
            else
            {
                $rytitle = '';
                $ryname = '';
                $ryemail = '';
                $rytestimonial = '';
            }
            echo $before_widget;
            ?>
            <div class="widget-text wp_widget_plugin_box">
                <?=( $title ) ? $before_title . $title . $after_title : 'Testimonials'?>
                <form method="post">
                    <label>Title*</label><input name='rytitle' value="<?=$rytitle?>" /><br />
                    <label>Name*</label><input name='ryname' value="<?=$ryname?>" /><br />
                    <label>Email*</label><input name='ryemail' value="<?=$ryemail?>" /><br />
                    <label>Testimonial*</label><input name='rytestimonial' value="<?=$rytestimonial?>" /><br />
                    <?php if ($ryerror != '') : ?><label class="error-message"><?=$ryerror?></label><?php endif; ?><br />
                    <input type="submit" name="rysubmit" value="SUBMIT" />
                </form>
            </div>
            <?php
            echo $after_widget;
        }
    
    }

    I don’t have any idea, how to create panel so I can manipulate (add, edit, delete) data entry from admin panel? It doesn’t matter for the security, I will learn it in the next level. Any link or help, I would be appreciate it. 🙂

    Anyway, sorry for my english.

The topic ‘[Plugin: Testimonial] How To Manipulate Database From Admin Panel’ is closed to new replies.