Forums

Plugin Unexpected Code (7 posts)

  1. james141
    Member
    Posted 1 year ago #

    Hi, I have tried to make a simple twitter plugin that basically looks at the rss feed from a twitter account and then displays this wherever a widget is placed. It all works fine apart from the fact that i get a message when activating the plugin:

    The plugin generated 305 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.

    Here's the code for the plugin.

    <?php
    /*
    Plugin Name: JCD Simple Twitter
    Plugin URI: http://jcookdesign.co.uk
    Description: Displays your latest tweet
    Version: 1.0
    Author: Jcook Design
    Author URI: http://jcookdesign.co.uk
    */
    
    add_action("widgets_init", array('jcd_simple_twitter', 'register'));
    register_activation_hook( __FILE__, array('jcd_simple_twitter', 'activate'));
    register_deactivation_hook( __FILE__, array('jcd_simple_twitter', 'deactivate'));
    class jcd_simple_twitter {
        function control(){
          $data = get_option('jcd_simple_twitter');
          ?>
    
          <p><label>Title <input name="title" type="text" value="<?php echo $data['title']; ?>" /></label></p>
        <p><label>Twitter Username <input name="username" type="text" value="<?php echo $data['username']; ?>" /></label></p>
          <p><label>Tweets to Display <input name="number" type="text" value="<?php echo $data['number']; ?>" /></label></p>
    
          <?php
           if (isset($_POST['username'])){
            $data['username'] = attribute_escape($_POST['username']);
            $data['number'] = attribute_escape($_POST['number']);
            $data['title'] = attribute_escape($_POST['title']);
            update_option('jcd_simple_twitter', $data);
          }
        }
      function widget($args){
          $data = get_option('jcd_simple_twitter');
        echo $args['before_widget'];
        echo $args['before_title'] . $data['title'] . $args['after_title'];
        include_once(ABSPATH . WPINC . '/feed.php');
                    // Get a SimplePie feed object from the specified feed source.
                    $rss = fetch_feed('http://twitter.com/statuses/user_timeline/'.$data['username'].'.rss');
                    if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly
                        // Figure out how many total items there are, but limit it to 5.
                        $maxitems = $rss->get_item_quantity($data['number']);
                        // Build an array of all the items, starting with element 0 (first element).
                        $rss_items = $rss->get_items(0, $maxitems);
                    endif;
                    ?>
                        <ul>
                        <?php if ($maxitems == 0) echo '<li>No items.</li>';
                        else
                        // Loop through each feed item and display each item as a hyperlink.
                        foreach ( $rss_items as $item ) : ?>
                        <li>
                            <a href="<?php echo $item->get_permalink(); ?>" title="<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>"><?php echo $item->get_title(); ?></a>
                        </li>
                        <?php endforeach; ?>
                        </ul>
        <?
        echo $args['after_widget'];
      }
      function register(){
        register_sidebar_widget('JCD Simple Twitter', array('jcd_simple_twitter', 'widget'));
        register_widget_control('JCD Simple Twitter', array('jcd_simple_twitter', 'control'));
      }
    }
    
    ?>

    Any help appreciated ;)

  2. Reuben Gunday
    Member
    Posted 1 year ago #

    You have not defined these two function in you Class jcd_simple_twitter
    function activate(){} & function deactivate(){}

    if you don't want to do anything while activating or deactivating your plugin, remove these two hooks

    register_activation_hook( __FILE__, array('jcd_simple_twitter', 'activate'));
    register_deactivation_hook( __FILE__, array('jcd_simple_twitter', 'deactivate'));
  3. Reuben Gunday
    Member
    Posted 1 year ago #

    and also register_sidebar_widget is deprecated, use wp_register_sidebar_widget

    http://codex.wordpress.org/Function_Reference/wp_register_sidebar_widget

  4. james141
    Member
    Posted 1 year ago #

    Yeah makes sense I suppose :p

    thanks for your help.

  5. james141
    Member
    Posted 1 year ago #

    Ok, i've tried everything but I can't get wp_register_sidebar_widget to work properly in place of register_sidebar_widget

    Any clues? The codex is no help to me.

  6. Reuben Gunday
    Member
    Posted 1 year ago #

    wp_register_sidebar_widget is almost same register_sidebar_widget but it has an additional id field.
    eg:-

    wp_register_sidebar_widget('unique-id','JCD Simple Twitter', array('jcd_simple_twitter', 'widget'));
        wp_register_widget_control('unique-id','JCD Simple Twitter', array('jcd_simple_twitter', 'control'));

    check this...I removed some deprecated functions.
    http://pastebin.com/raw.php?i=DTd8f7KK

  7. WebTechGlobal
    Member
    Posted 9 months ago #

    Dealing with 203 characters myself in my new plugin. Fix then then I can release it for the first time.

    I recommend you change your activate and deactive function names. They are too generic.

Topic Closed

This topic has been closed to new replies.

About this Topic