• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 294
  • Last Modified:

Adjustment in small Wordpress plugin?

This is a small wordpress widget called dashboard-post-it.

It's a text widget that lets me, as the admin, post a note on the dashboard for all users to see.

Is it possible to adjust the code so that the text widget appears on the 'Add New Post' page in wp-admin - under the main text box where the body of the post is entered, instead of on the dashboard?

If so, can you show me how? The goal is to provide instructions/tips to writers right on that page where they are writing.

Thanks,  Chris
<?php

/*
Plugin Name: Dashboard Post-it
Plugin URI: http://wordpress.org/extend/plugins/dashboard-post-it/
Description: Adds a simple 'Post-it' widget to the Dashboard that allows you to leave yourself or other authors a note. HTML allowed, HTML restrictions observed. Based on code from <a href="http://wpengineer.com/add-wordpress-dashboard-widgets/">WP Engineer</a> and <a href="http://rick.jinlabs.com/2009/02/01/how-add-options-to-your-wordpress-27-dashboard-widgets/">Ricardo Gonz&aacute;lez Castro</a>.
Version: 1.1
Author: Mark Dingemanse
Tags: plugin, dashboard, widget, note
Requires at least: 2.7
Tested up to: 2.8.4
Author URI: http://ideophone.org/
*/

/*
 * Spit out the content of the Post-it Widget
 */

function dashboard_postit() {
        $widget_options = dashboard_postit_Options();
		// echo "{$widget_options['pi_text']}";
		print wpautop($widget_options['pi_text']);

}
 
 
/**
 * Manage the defaults and the options
 */
function dashboard_postit_Options() {

	$defaults = array( 'pi_title' => 'Post-it', 'pi_text' => 'Your text here');
	if ( ( !$options = get_option( 'dashboard_postit' ) ) || !is_array($options) )
		$options = array();
	return array_merge( $defaults, $options );
	global $defaults;
}

/**
 * Add the Post-it Widget via function wp_add_dashboard_widget()
 */
 
function dashboard_postit_Init() {
	$options = dashboard_postit_Options();
	$title = $options['pi_title'];
	wp_add_dashboard_widget( 'dashboard_postit', $title, 'dashboard_postit', 'dashboard_postit_Setup' );
}

/**
 * Edit the options
 */

function dashboard_postit_Setup() {
 
	$options = dashboard_postit_Options();
 
		// Get our options and see if we're handling a form submission.
	if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) && isset( $_POST['widget_id'] ) && 'dashboard_postit' == $_POST['widget_id'] ) {
		foreach ( array( 'pi_title', 'pi_text' ) as $key )
				$options[$key] = stripslashes($_POST[$key]);
				if ( !current_user_can('unfiltered_html') )
					$newoptions['text'] = stripslashes(wp_filter_post_kses($newoptions['text'])); // This should take care of HTML permissions.
		update_option( 'dashboard_postit', $options );
	}
		
		// Format the options to be valid HTML attributes.
		// $title = htmlspecialchars($options['pi_text'], ENT_QUOTES);
		
?>
		<label style="display:block;margin-bottom:4px;" for="pi_title">Widget title: <input type="text" id="pi_title" name="pi_title" value="<?php echo $options['pi_title'] ?>" /></label>
		<label style="display:block;margin-bottom:4px;" for="pi_text">Your note: <textarea style="width: 99%; height: 200px;margin:4px 0;" id="pi_text" name="pi_text"><?php echo $options['pi_text'] ?></textarea></label>
<?php
}
 
/**
 * Use the hook to integrate our new widget
 */
add_action('wp_dashboard_setup', 'dashboard_postit_Init');
 
?>

Open in new window

0
St_Aug_Beach_Bum
Asked:
St_Aug_Beach_Bum
  • 6
  • 3
1 Solution
 
jeremyjared74Commented:
If you want to add some text to the text editor, you can use this trick to place instructions directly into the post/page editor:

<?php
add_filter( 'default_content', 'my_editor_content' );
function my_editor_content( $content ) {
  $content = "<h2>Title of the Help Section Here</h2><br /><p>Add some explanation or instructions here. It will automatically be placed in the WordPress Editor when creating a new post.</p>";
  return $content;
  }
?>

Open in new window


That would go into the functions.php file. It's not exactly what you asked, but I thought you might be able to use this method?

Regards,
jeremyjared74
0
 
St_Aug_Beach_BumAuthor Commented:
Hi Jeremy,

That's a neat trick - definitely a great way to put something where they will see it :)

However, I need to put the instructions below the editor, not in it, so they can reference the instructions while they write.

But thank you anyway,    Chris  
0
 
gwkgCommented:
add_meta_box() is the function that will create a box under the editor.

http://codex.wordpress.org/Function_Reference/add_meta_box
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
St_Aug_Beach_BumAuthor Commented:
Would I replace this part:

-----------
function dashboard_postit_Init() {
      $options = dashboard_postit_Options();
      $title = $options['pi_title'];
      wp_add_dashboard_widget( 'dashboard_postit', $title, 'dashboard_postit', 'dashboard_postit_Setup' );
---------

with that?
0
 
St_Aug_Beach_BumAuthor Commented:
Or maybe that last line?
0
 
St_Aug_Beach_BumAuthor Commented:
I ended up just writing it into the source code in wp-admin dir. Never got a clear answer on this, maybe too difficult.
0
 
St_Aug_Beach_BumAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for St_Aug_Beach_Bum's comment http:/Q_27326952.html#37015802

for the following reason:

Accepting own solution, since no clear answer and just wrote it into source.
0
 
jeremyjared74Commented:
I actually found a way to do this. You really shouldn't hack the core files. I forgot about this question.

If you're still interested in a better way, use this:

Open your functions.php file and past this in it:
<?php 
if ( is_admin() ) {
  function add_post_enctype() {
      echo 
      "<script type='text/javascript'>
          jQuery(document).ready(function(){
          jQuery('#post').attr('enctype','multipart/form-data');
          });
        </script>";
  }
add_action('admin_head', 'add_post_enctype');
}
$new_meta_boxes =
array(
  "start" => array(
  "name" => "start",
  "type" => "start"),
  "std" => "",
  "type" => "text",
  "title" => "Tagline",
  "description" => "",
  "std" => "",
  );
function new_meta_boxes() {
  global $post, $new_meta_boxes;
  foreach($new_meta_boxes as $meta_box) {
    $meta_box_value = get_post_meta($post->ID, $meta_box['name'].'', true);
    if($meta_box_value == "")
    $meta_box_value = $meta_box['std'];
    if($meta_box['type'] == "start") {
    echo "<div class='optionsbox'><style type='text/css'>.optionsbox {
      display:block;
      width:auto;
      float:none;
      overflow: hidden;
      }
      
    #new-meta-boxes:after {
    content:\"More Text Here!\";
    display:block;
    width:100%;
    height:10px;
    color:black;
    padding:2px 10px 20px;
    }
    </style>";
    }   
    }
    }
function create_meta_box() {
  global $theme_name;
  if ( function_exists('add_meta_box') ) {
    add_meta_box( 'new-meta-boxes', 'You Can Add Your Text Here', 'new_meta_boxes', 'post', 'normal', 'high' );
    add_meta_box( 'new-meta-boxes', 'Page Options', 'new_meta_boxes', 'page', 'normal', 'high' );

  }  
}
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata', 12);?>

Open in new window


It's a little bit more than you need for your bit of text, but it will be better than hacking the core.

Notice where I have the text.
add_meta_box( 'new-meta-boxes', 'You Can Add Your Text Here', 'new_meta_boxes', 'post', 'normal', 'high' );

Open in new window


Change the text   'You Can Add Your Text Here' To whatever you want it to say.

If you need to add text below it I also used the CSS in the code above to place the text below the header in this part of the code:
    
#new-meta-boxes:after {
    content:\"More Text Here!\";
    display:block;
    width:100%;
    height:10px;
    color:black;
    padding:2px 10px 20px;
    }

Open in new window


Since the CSS is inside of a PHP function, it needs the \\  \\ to escape the double quotes. It could be refined to work better, but I don't have the time.

I'll post the entire piece of code I now use to add custom image uploads to my themes you might find it useful someday?

<?php 
if ( is_admin() ) {
  function add_post_enctype() {
      echo 
      "<script type='text/javascript'>
          jQuery(document).ready(function(){
          jQuery('#post').attr('enctype','multipart/form-data');
          });
        </script>";
  }
add_action('admin_head', 'add_post_enctype');
}
$new_meta_boxes =
array(
  "start" => array(
  "name" => "start",
  "type" => "start"),
  "image" => array(
  "name" => "image",
  "std" => "",
  "type" => "image",
  "title" => "Thumbnail Image"), 
  "bannerimage" => array(
  "name" => "bannerimage",
  "std" => "",
  "type" => "image",
  "title" => "Banner Image"), 
  "tagline" => array(
  "name" => "tagline",
  "std" => "",
  "type" => "text",
  "title" => "Tagline",
  "description" => "Tagline to your post"),
  "end" => array(
  "name" => "end",
  "type" => "end"),
  );
function new_meta_boxes() {
  global $post, $new_meta_boxes;
  foreach($new_meta_boxes as $meta_box) {
    $meta_box_value = get_post_meta($post->ID, $meta_box['name'].'', true);
    if($meta_box_value == "")
    $meta_box_value = $meta_box['std'];
    echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
    if($meta_box['type'] == "start") {
    echo "<div class='optionsbox'><style type='text/css'>.optionsbox {
      display:block;
      width:auto;
      float:none;
      overflow: hidden;
      }
    .optionsbox input, .optionsbox textarea {
      outline:none;
      padding:5px;
      color:#999;
      }
    .optionsbox input:focus, .optionsbox textarea:focus {
      border-color:#999;
      color:#666;
      }
    .optionsbox p {
      margin-bottom:20px;
      }
    .optionsbox label {
      width:140px;
      display:block;
      float:left;
      margin-top:3px;
      }
    .optionsbox small {
      padding-left:140px;
      padding-top:3px;
      color:#999;
      }
    </style>";
    } else if($meta_box['type'] == "end") { 
    	echo '</div>';
    } else if($meta_box['type'] == "image") { 
    	echo $meta_box['before'];
    	echo '<div style="background:#f4f4f4;padding:10px;height:120px;margin:0 0 20px 0;display:block">';
    	if($meta_box_value) { echo '<img style="float:right" src="'.get_bloginfo('template_directory').'/scripts/timthumb.php?src='.$meta_box_value.'&w=120&h=120" alt="" />'; }
    	echo'<p><label for="'.$meta_box['name'].'_upload">'.$meta_box['title'].'</label>';
    	echo'<input type="file" name="'.$meta_box['name'].'_upload" size="55" /><br />';
    	echo'<small>Upload image here</small></p>';
    	echo'<p><label>&nbsp;</label>';
    	echo'<input type="text" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="55" /><br />';
    	echo'<small>or add a URL to the image here</small></p>';
    	echo '</div>';
    } else if($meta_box['type'] == "text") { 
      	echo $meta_box['before'];
      	echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
      	echo'<input style="color:#666;" type="text" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="55" /><br />';
      	echo'<small style="padding-left:140px;padding-top:3px;">'.$meta_box['description'].'</small></p>';
    } else if($meta_box['type'] == "checkbox") { 
      	echo $meta_box['before'];
      	echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
      	if($meta_box_value) { $checked = "checked=\"checked\""; } else { $checked = ""; }
      	echo '<input style="display:block;float:left;width:20px;margin:5px 0 0 0;" '.$checked.' type="checkbox" name="'.$meta_box['name'].'" /><br/>';
      	echo'<small style="clear:both;padding-left:140px;padding-top:3px;display:block;">'.$meta_box['description'].'</small></p>';
    } else if($meta_box['type'] == "textarea") { 
      	echo $meta_box['before'];
      	echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
      	echo'<textarea style="color:#666;" name="'.$meta_box['name'].'" cols="50" rows="4">'.stripslashes($meta_box_value).'</textarea><br />';
      	echo'<small style="padding-left:140px;padding-top:3px;">'.$meta_box['description'].'</small></p>';
        } 
    }
}
function create_meta_box() {
  global $theme_name;
  if ( function_exists('add_meta_box') ) {
    add_meta_box( 'new-meta-boxes', 'Post Options', 'new_meta_boxes', 'post', 'normal', 'high' );
    add_meta_box( 'new-meta-boxes', 'Page Options', 'new_meta_boxes', 'page', 'normal', 'high' );
  }
}
function save_postdata( $post_id ) {
  global $post, $new_meta_boxes;
  $post_id = wp_is_post_revision($post_id);
  foreach($new_meta_boxes as $meta_box) {
  	if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
  	return $post_id;
  	}
  	if ( 'page' == $_POST['post_type'] ) {
      	if ( !current_user_can( 'edit_page', $post_id ))
      	return $post_id;
    	} else {
      	if ( !current_user_can( 'edit_post', $post_id ))
      	return $post_id;
      	}
    $imageuploadlocation = "";
    $metaboxname = "";
    $metaboxname_upload = "";
    if($meta_box['type'] == 'image') {
    	$metaboxname = $meta_box['name'];
    	$metaboxname_upload = $metaboxname.'_upload';
    	if($_FILES[$metaboxname_upload]['name'] != "") {
    		$overrides = array( 'test_form' => false);
    		$imagefile=wp_handle_upload($_FILES[$metaboxname_upload], $overrides);
    		$imageuploadlocation = $imagefile['url'];
    		delete_post_meta($post_id, $metaboxname, get_post_meta($post_id, $metaboxname, true));
    		add_post_meta($post_id, $metaboxname, $imageuploadlocation, true);
    	} else {
    		$imageuploadlocation = get_post_meta($post_id, $metaboxname, true);
    		delete_post_meta($post_id, $metaboxname, get_post_meta($post_id, $metaboxname, true));
    		add_post_meta($post_id, $metaboxname, $_POST[$metaboxname], true);
    	   } 
    } else {
    	$data = $_POST[$meta_box['name'].''];
    	if(get_post_meta($post_id, $meta_box['name'].'') == "")
    	add_post_meta($post_id, $meta_box['name'].'', $data, true);
    	elseif($data != get_post_meta($post_id, $meta_box['name'].'', true))
    	update_post_meta($post_id, $meta_box['name'].'', $data);
    	elseif($data == "")
    	delete_post_meta($post_id, $meta_box['name'].'', get_post_meta($post_id, $meta_box['name'].'', true));
      }
  }
}
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata', 12);?>

Open in new window


You'll need to modify the code above, but the first the first sample can simply be pasted into the functions.php file (after changing your text).

NOTE:
I'm only objection to get your attention. If you still wish to close it out, go ahead.
0
 
St_Aug_Beach_BumAuthor Commented:
Jeremy, thank you very much!!!

Yeh, the 'objection' got my attention - never had that happen before :)

But this is great and thanks again!

Chris
0
 
jeremyjared74Commented:
You're welcome.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now