PHP

jQuery-1.3-with-PHP-bookI have read through the newest jQuery book out there: jQuery 1.3 With PHP from Packt Publishing by Kae Verans. It’s targeted at experienced PHP developers who want to enhance their applications on the front end with JavaScript and Ajax functionality and uses the jQuery library to do so. You do not necessarily need JavaScript or jQuery experience to follow along, although it helps. If you are a front end developer who already knows jQuery inside and out and are looking to learn more about PHP, this book is not really geared for you.

But If you’re like me, you are not brand new to jQuery and it’s powerful features and ease of use. You probably have already used it in some of your projects and have used the excellent documentation found on their site. As good as the official docs are, there is always room for improvement by using more robust and clearer examples. That’s exactly what you get with “jQuery 1.3 with PHP“.

The examples you can look forward to building include tabs, accordions, form validation, file management, calendars, image manipulation, drag and drop, and data tables. Your PHP skills, along with the excellent and well explained jQuery code found throughout the book for each example, will allow you to add modern and responsive elements very easily and quickly.

If you are a veteran PHP developer and are looking to get started in the front end UI of your applications and web sites, this is the right book with the right angle for you. If you are a MVC framework guy like I am, the server-side PHP code provided is easily adapted to put into your controllers and views.

Disclosure: I was given a copy of the book to review by Packt Publishing. If you want to purchase the book and use a link from my site, I receive a commission.

Read more

I recently had the need to perform some ajax functions on the backend of Texas Tech Today and wasn’t sure exactly how to go about it. So after a search, I found this great explanation: Simplified AJAX For WordPress Plugin Developers using Jquery. But it stops short of explaining how to receive some data from a POST, give it to PHP to do something with, and then return a result back to the form.

So, I thought I would detail how to do that in WordPress in a plugin.

The plugin just has a basic options page (Settings -> Ajax4WP) and lets you save an option to the database via ajax. Go ahead and download and install it; you’ll see how simple it is.

1. Create a php file that will have our javascript code, and save it into your plugins folder.

The reason we need our javascript code to be in a PHP file is to get the “get_option(‘siteurl’)” value dynamically, since we’ll need that to reference our PHP file with the ajax function.

js-Ajax4WP.php (download the plugin files)

<?php
include('../../../wp-config.php');
$site_url = get_option('siteurl');
?>
jQuery(document).ready(function() {

   //when the link with the id of save_settings is clicked, get the value of the text field and start doing the ajax stuff
   jQuery('#save_settings').click(function() {

      var Ajax4WP_test_setting = jQuery("#Ajax4WP_test_setting").val();

      //action is the name of the php function in your main plugin file
      jQuery.post("<?php echo $site_url; ?>/wp-admin/admin-ajax.php", {action:"Ajax4WP_save_settings", 'cookie': encodeURIComponent(document.cookie), Ajax4WP_test_setting:Ajax4WP_test_setting},
      function(res)
      {
         var message_result = eval('(' + res + ')');
         if (!message_result.success) {
            jQuery("#Ajax4WP_test_setting").css("border","2px solid #cc0000");
         }
         alert(message_result.message + ' ' + message_result.setting);
      });

      return false;
   });

});

This is jQuery ajax code that takes the value of a text field and passes it to Ajax4WP_save_settings() in our plugin file. We use jQuery.post to define a post variable (Ajax4WP_test_setting) that PHP can use.

Once the plugin code does its thing on the server (step 2 below), it returns the result back to this function at “function(res)”. Then we eval the json result and use an alert to display a message.

2. Create your standard plugin file and put in the Ajax4WP_save_settings function.

Ajax4WP.php (download the plugin files)

...

// our ajax action:
add_action('wp_ajax_Ajax4WP_save_settings', array(&$this, 'Ajax4WP_save_settings'), 10);

function Ajax4WP_save_settings()
		{
		   $name = 'Ajax4WP_test_setting';
			$value = $_POST['Ajax4WP_test_setting'];

			if ($value == "") {
				$message_result = array(
					'setting' => "",
					'message' => 'Please enter a Setting Value!',
					'success' => FALSE
	         );
			}
			else {
			   update_option($name, $value);
				$message_result = array(
					'setting' => $value,
					'message' => 'Saved! You entered:',
				   'success' => TRUE
	         );
			}
			echo json_encode($message_result);
			exit;
		}
...

This is standard PHP to process a POST request. When we’re through, we echo the json_encode() result. NOTE: json_encode is a PHP >= 5.2 only function, so be sure you are up to date on your PHP install.

3. Make a php file that will contain basic html and will get included on our settings page

Ajax4WP-settings.php (download the plugin files)

<div id="Ajax4WP Settings" class="inside" style="margin-left: 29px; width: 200px;">

   <h3>Ajax4WP Settings</h3>

   <div id="loading_message"></div>

   <p>
   <label for="Ajax4WP_test_setting">Setting Value:</label>
   <br />
   <input type="text" id="Ajax4WP_test_setting" name="Ajax4WP_test_setting" value="<?php if (isset($this->Ajax4WP_test_setting)) { echo $this->Ajax4WP_test_setting; } ?>" size="20" />
   </p>

   <p><a href="#" id="save_settings" class="button button-highlighted">Save Settings</a></p>

</div>

This is just a “stub” and gets included in our plugin. That way we don’t have a lot of html code mucking up the main plugin file. You can see what’s going on better in the source code when you download the files.

I hope that helps you out if you are wondering how to use jQuery and ajax in your WordPress plugins. Please leave a comment if you have any questions. Thanks!

Read more

Texas Tech Today Screenshot

Whew! A few hard months of planning and preparation have come to a culmination with the launch of the new Texas Tech Today. TTT is our news and information site that holds all of our news releases, clips, stories, and videos. It all runs on WordPress with the help of some custom plugins and templates. This isn’t a typical blog site, and the extendability of WordPress allowed me to do some really cool things and use it as a CMS that will fit our needs very well. This is a credit to the developers of wp, and the fact that they have made it such a nice platform to work with.

This new version will make the posting of stories faster and more efficient. That way, our content developers can focus on producing more and more quality content that our audience will find valuable and want to share.

The old way of posting stories to our site was through dreamweaver and was completely file based, with no help from a cms of any sort. This worked ok for a while, but we realized there had to be a better way to manage our content. Since our stories are somewhat “templatable”, meaning they can have a standard sidebar and other options, I set out to find a way to make it dead easy to post a story without using dreamweaver. Enter wordpress and the ability to code plugins that do pretty much whatever you can think of, and we were set.

We used to have our stories and videos on one server and clips and news releases on another. The news releases and clips were pushed out with a custom mini-cms I built in CodeIgniter. The new way allows us to have everything in one place and the built-in rss feeds for every category make it easy to send out our feeds for each type of post.

Moving to WordPress will hopefully get us a little better search engine placement and maybe some chatter in the blogosphere. Wp-stats is amazing, but we’ve also got google analytics running so we can have a comprehensive view of our visitors and their interests in our content to serve them better.

My hope is that this can be a showcase of the power that wordpress has and that we can lead the way for other universities to use this wonderful software.

Read more