WordPress tip: Bulk delete comments with a specific url

Just run the following query on your WordPress database to delete comments with nastyspamurl as url. Don’t forget to replace the table prefix wp_ if your database is using another prefix.
And of course, create a backup of your database before running the query!

DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;

WordPress tip: Bulk delete comments with a specific url

Just run the following query on your WordPress database to delete comments with nastyspamurl as url. Don’t forget to replace the table prefix wp_ if your database is using another prefix.
And of course, create a backup of your database before running the query!

DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;

The post WordPress tip: Bulk delete comments with a specific url appeared first on WPRecipes.

How to set the default image size in WordPress galleries

Simply paste the following snippet into your functions.php file:

remove_shortcode('gallery');
add_shortcode('gallery', 'custom_size_gallery');
 
function custom_size_gallery($attr) {
     $attr['size'] = 'medium';
     return gallery_shortcode($attr);
}

The desired size can be changed on line 5.

Thanks to emoticode for the cool tip!

Easy custom WordPress themes with Ultimatum 2.5

A word about the Ultimatum theme

Ultimatum is more than just a WordPress theme or framework. It’s a total all-in-one WordPress solution written in HTML5 and CSS3.
It’s definitely one of the most customizable WordPress solutions on the planet, users can modify everything from specific font elements to the overall layout structure using the super simple and user-friendly admin interface. You’d be hard pressed to find a more flexible and simple WordPress solution.

Here’s a short video with a feature overlook:

Ultimatum theme features:

  • No Coding Necessary
    You don’t need to know a lick of programming to use Ultimatum. With its super robust interface, you can build an entire WordPress website just using the simple drag-and-drop template builder.
  • Design Your Own Layouts
    Many WordPress themes and templates offer a few variations in layout but you’re always limited to what they’re offering. With Ultimatum, you can use the unique layout builder to put your widgets and modules anywhere you’d like on the page. Just drag and drop each element and you’re good to go. 
  • Simple Styling
    Using Ultimatum’s CSS editors you can change up the font style, size, height and color of any section of your site! No need to dig through various CSS files and mess with the code either. This crazy simple interface just lets you select what you want by filling out forms and dropdown menus. 
  • Mobile Ready
    Ultimatum is built with a responsive design. That means it’ll work anywhere your users take it! That includes laptops, tablets, smartphones and more! However, if you’d like, with the Pro version of Ultimatum, you can also create a mobile web application of your site with just a few easy clicks.
  • Bootstrap and Bootswatches
    Ultimatum includes the classic 960 grid system, but they’ve also added a highly popular grid framework to the latest Ultimatum release. You can now create all sorts of websites with Bootstrap and 12 Bootswatches! 
  • 3 Incredible Premium Sliders
    Sliders are a great way to show off some of your site’s best features, and with Ultimatum you get 3 amazingly awesome premium sliders: Layer Slider, Slider Revolution and ShowBiz Slider! Each are simple to use and highly customizable! It also includes 7 more sliders.
  • Mammoth Font Library
    Besides the more than 600 Google fonts available you can easily add your own fonts right into the system and use them anywhere on your site!
  • Create Beautiful Slideshows
    Using the Slideshow Generator, you can just drag and drop your content and create a gorgeous slideshow for your users to enjoy!
  • Tons of Menu Options
    Even something as basic as a menu can turn into a great visual or resourceful component of your site. With Ultimatum you have your choice of 7 different types of menus from Vertical DropDown Menu to Bootstrap Menu.
  • CSS Live Preview
    Are you one of those types that edits the CSS, saves it and refreshes your site to see the changes? That can be a time-consuming and painful process. Use Ultimatum’s Front-End CSS Editing tool and you’ll see your changes previewed for you right in front of your eyes in real time.
  • Widgets Galore
    Sure WordPress already has an arsenal of widgets, many of which are great. But Ultimatum comes with a slew of its own custom widgets, designed to work seamlessly with the Ultimatum template! Widgets includes things like Tag Cloud, Ultimatum Super Title, Ultimatum Search, Ultimatum Recent Comments, Ultimatum BreadCrumbs, etc.
  • WooCommerce Compatible (Pro version only)
    Setting up an online store? If you use WooCommerce, you’re in luck! Ultimatum was built to work seamlessly with the popular online e-commerce solution!
  • Detailed Documentation
    With your purchase of this Mighty Deal, you’ll get some serious learning tools too. Ultimatum comes with detailed documentation to fully explain every one of its fantastic features.

Get Ultimatum for just $35

So, are you impressed by Ultimatum‘s features? To be fully honest, I always prefer coding my own themes, but I have to admit that those guys did a great job, as I never saw a so complete solution for creating complex WordPress themes with no coding. A perfect solution for those who aren’t familiar with PHP/WordPress development, or for developers looking to an easy way to build websites for their clients.

CatsWhoCode long time partner Mighty Deals are currently offering Ultimatum for the low price of $35 (instead of $65) so don’t wait and pick your copy!

5 powerful techniques for responsive web design

Responsive images

Fluid images are a central aspect of a responsive design. Happilly, making your images fluid is pretty easy to do. The CSS code below will make sure that images are as big as possible. For example, if the image is displayed within a 600px width container, the image will be 600px. Resize the container to 350px, and the image will be automatically resized to the maximum width available, in this case 350 pixels.

img {
     max-width: 100%;
}

Responsive HTML5 videos

As the HTML5 specification allow you to easily embed videos in your webpages, why not using it? Making HTML5 responsive videos is just too easy: Just add the following to your css file and you’re good to go!

video {
	max-width: 100%;
	height: auto;
}

Responsive YouTube videos

As I just shown you, there’s nothing complicated in making images or html5 videos responsive. But what about videos from popular sites? Indeed, YouTube is the most popular video host on the web, so chances are you’ll have to work with a YouTube video someday.

First, consider this HTML code:

<div class="video-container">
         <iframe src="http://www.youtube.com/embed/dFVxGRekRSg" frameborder="0" width="560" height="315"></iframe>
</div>

Then, add this to your CSS file:

.video-container {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 30px; height: 0; overflow: hidden;
}
 
.video-container iframe,
.video-container object,
.video-container embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

Here you go, your YouTube videos are now responsive!

Here is an example video, featuring french punk band Secular Plague:

This code also works well with Vimeo videos, as demonstrated below:

<div class="video-container">
	<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>

Source: http://avexdesigns.com/responsive-youtube-embed/

Responsive navigation menu

Navigation menus are the easiest way for visitors to quickly find what they’re looking for on your site. But when viewing a website on a mobile device, navigations menus are often unreadable or very hard to use. In fact, for smaller displays, it is way better to use a <select> dropdown menu instead of a traditional horizontal menu.

Here’s an easy technique you can implement on any site. Let’s start with the HTML, we’ll be creating two menus: a standard <ul> menu for standard displays, and a <select> dropdown menu for mobile devices:

<nav> 

  <ul> 
    <li><a href="/" class="active">Home</a></li> 
    <li><a href="/collections/all">Books</a></li> 
    <li><a href="/blogs/five-simple-steps-blog">Blog</a></li> 
    <li><a href="/pages/about-us">About Us</a></li> 
    <li><a href="/pages/support">Support</a></li> 
  </ul> 
  
  <select> 
    <option value="" selected="selected">Select</option> 
    
    <option value="/">Home</option> 
    <option value="/collections/all">Books</option> 
    <option value="/blogs/five-simple-steps-blog">Blog</option> 
    <option value="/pages/about-us">About Us</option> 
    <option value="/pages/support">Support</option> 
  </select> 

</nav>

And here is the CSS. Nothing complicated here: We hide the <select> by default, and only show it if the document width is smaller than 960px.

nav select {
  display: none;
}

@media (max-width: 960px) {
  nav ul     { display: none; }
  nav select { display: inline-block; }
}

Source: http://css-tricks.com/convert-menu-to-dropdown

Responsive data tables

Tables and responsive design generally do not fit very well together. But here’s a really useful technique created by talented developer Chris Coyier to help you made responsive tables.

Let’s start by creating a basic table. Here’s the HTML…

<table>
	<thead>
	<tr>
		<th>First Name</th>
		<th>Last Name</th>
		<th>Job Title</th>
	</tr>
	</thead>
	<tbody>
	<tr>
		<td>James</td>
		<td>Matman</td>
		<td>Chief Sandwich Eater</td>
	</tr>
	<tr>
		<td>The</td>
		<td>Tick</td>
		<td>Crimefighter Sorta</td>
	</tr>
	</tbody>
</table>

And the CSS:

/* 
Generic Styling, for Desktops/Laptops 
*/
table { 
  width: 100%; 
  border-collapse: collapse; 
}
/* Zebra striping */
tr:nth-of-type(odd) { 
  background: #eee; 
}
th { 
  background: #333; 
  color: white; 
  font-weight: bold; 
}
td, th { 
  padding: 6px; 
  border: 1px solid #ccc; 
  text-align: left; 
}

Now that we have a table and its basic styling, let’s make our table responsive. What we’re going to do is to force the table to not behave like a table by setting every table-related element to be block-level. Then by keeping the zebra striping we originally added, it’s kind of like each table row becomes a table in itself, but only as wide as the screen. No more horizontal scrolling! Then for each “cell”, we’ll use CSS generated content (:before) to apply the label, so we know what each bit of data means.

@media 
only screen and (max-width: 760px),
(min-device-width: 768px) and (max-device-width: 1024px)  {

	/* Force table to not be like tables anymore */
	table, thead, tbody, th, td, tr { 
		display: block; 
	}
	
	/* Hide table headers (but not display: none;, for accessibility) */
	thead tr { 
		position: absolute;
		top: -9999px;
		left: -9999px;
	}
	
	tr { border: 1px solid #ccc; }
	
	td { 
		/* Behave  like a "row" */
		border: none;
		border-bottom: 1px solid #eee; 
		position: relative;
		padding-left: 50%; 
	}
	
	td:before { 
		/* Now like a table header */
		position: absolute;
		/* Top/left values mimic padding */
		top: 6px;
		left: 6px;
		width: 45%; 
		padding-right: 10px; 
		white-space: nowrap;
	}
	
	/*
	Label the data
	*/
	td:nth-of-type(1):before { content: "First Name"; }
	td:nth-of-type(2):before { content: "Last Name"; }
	td:nth-of-type(3):before { content: "Job Title"; }
	td:nth-of-type(4):before { content: "Favorite Color"; }
	td:nth-of-type(5):before { content: "Wars of Trek?"; }
	td:nth-of-type(6):before { content: "Porn Name"; }
	td:nth-of-type(7):before { content: "Date of Birth"; }
	td:nth-of-type(8):before { content: "Dream Vacation City"; }
	td:nth-of-type(9):before { content: "GPA"; }
	td:nth-of-type(10):before { content: "Arbitrary Data"; }
}

Source: http://css-tricks.com/responsive-data-tables

ThemeFuse giveaway: 3 premium WordPress themes to win

A word about ThemeFuse

ThemeFuse is one of the most popular actors in the premium WordPress Themes market. They provide lots of themes with a great design and solid code.

They have lots of different designs for lots of different needs, so you should definitely have a look to their website! Also, ThemeFuse is on Facebook, so don’t forget to go like their page!

How to join the giveaway?

Joining the giveaway is free and easy. First, have a look to ThemeFuse WordPress Themes and find the theme you’d like to win. Then, simply leave a comment below to let me know which theme you want.

In one week (Tuesday february 18) I’ll randomly pick 3 winners. They’ll receive the chosen theme directly from ThemeFuse.

Good luck everyone!

Easily delete WordPress post revisions using your fuctions.php file

Open you functions.php file and paste the following code:

$wpdb->query( "
DELETE FROM $wpdb->posts
WHERE post_type = 'revision'
" );

Save the file and open your blog homepage to run the code. Once done, there’s no need to keep the code snippet in your functions.php file, as it will always delete all post revisions. So simply remove it.

Thanks to Hardeep Asrani for the tip!

Sponsored post: 3 WordPress premium plugins for $39

I rarely publish sponsored posts on my blogs, but today here’s a very good deal that can benefit to many of you. For $39, Mighty Deals let you download a bundle of 3 premium plugins from Tribulant.

Those 3 plugins are:

  • The WordPress Newsletter plugin, which gives you the ability to accept subscriptions on your WP website and send out mass newsletters to your mailing list(s).
  • The WordPress Shopping Cart plugin, which transforms a simple WP website into an e-commerce site that can sell products and accept payments directly via PayPal, 2CheckOut, MoneyBookers, and more.
  • The WordPress Banner Rotator plugin, with which you can quickly and seamlessly place image, Flash, and code banner ads on your WP website’s front-end using either sidebar widgets, post/page embedding, and/or hard-coding directly into your theme.

Want to know more about those plugins? Then just have a look at this page where you can learn more and buy.

WordPress snippet: breadcrumb without plugin

Open your functions.php and paste the code below in it:

function the_breadcrumb() {
                echo '<ul id="crumbs">';
        if (!is_home()) {
                echo '<li><a href="';
                echo get_option('home');
                echo '">';
                echo 'Home';
                echo "</a></li>";
                if (is_category() || is_single()) {
                        echo '<li>';
                        the_category(' </li><li> ');
                        if (is_single()) {
                                echo "</li><li>";
                                the_title();
                                echo '</li>';
                        }
                } elseif (is_page()) {
                        echo '<li>';
                        echo the_title();
                        echo '</li>';
                }
        }
        elseif (is_tag()) {single_tag_title();}
        elseif (is_day()) {echo"<li>Archive for "; the_time('F jS, Y'); echo'</li>';}
        elseif (is_month()) {echo"<li>Archive for "; the_time('F, Y'); echo'</li>';}
        elseif (is_year()) {echo"<li>Archive for "; the_time('Y'); echo'</li>';}
        elseif (is_author()) {echo"<li>Author Archive"; echo'</li>';}
        elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<li>Blog Archives"; echo'</li>';}
        elseif (is_search()) {echo"<li>Search Results"; echo'</li>';}
        echo '</ul>';
}

Once done, open header.php and call the function:

<?php the_breadcrumb(); ?>

Thanks to emoticode for this snippet!

10+ handy and reusable jQuery code snippets

Smooth scrolling to top of page

Let’s start this list by a very popular and useful snippet: Those 4 lines will allow your visitors to smooth scrool to the top of the page simply by clicking a a link (with #top id) located at the bottom of your page.

$("a[href='#top']").click(function() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  return false;
});

Source: http://stackoverflow.com/questions/1144805/how-do-i-scroll…

Clone table header to the bottom of table

For a better readability of your tables, it can be a good idea to clone the table header on the bottom of the table. This is what this useful snippet do.

var $tfoot = $('<tfoot></tfoot>');
$($('thead').clone(true, true).children().get().reverse()).each(function(){
    $tfoot.append($(this));
});
$tfoot.insertAfter('table thead');

Source: http://lunart.com.ua/jquery

Load external content

Do you need to add some external content to a div? It is pretty easy to do with jQuery, as demonstrated in the example below:

$("#content").load("somefile.html", function(response, status, xhr) {
  // error handling
  if(status == "error") {
    $("#content").html("An error occured: " + xhr.status + " " + xhr.statusText);
  }
});

Source: http://api.jquery.com/load/

Equal height columns

When you’re using columns to display content on your site, it definitely look better if the columns have an equal height. The code below will take all div elements with the .col class and will adjust their heights according to the bigger element. Super useful!

var maxheight = 0;
$("div.col").each(function(){
  if($(this).height() > maxheight) { maxheight = $(this).height(); }
});

$("div.col").height(maxheight);

Source: http://web.enavu.com/tutorials/top-10-jquery-snippets-including-jquery-1-4/

Table Stripes (Zebra)

When displaying data on a table, alternating colors on each row definitely increases readability. Here’s a snippet to automatically add a CSS class to one row of out two.

$(document).ready(function(){                             
     $("table tr:even").addClass('stripe');
});

Source: http://www.alovefordesign.com/5-jquery-must-have-code-snippets/

Partial page refresh

If you need to refresh only a portion of a page, the 3 lines of code below will definitely help. In this example, a #refresh div is automatically refreshed every 10 seconds.

setInterval(function() {
$("#refresh").load(location.href+" #refresh>*","");
}, 10000); // milliseconds to wait

Source: http://web.enavu.com/tutorials/top-10-jquery-snippets-including-jquery-1-4/

Preload images

jQuery make it easy to preload images in the background so visitors won’t have to wait forever when they would like to display an image. This code is ready to use, just update the image list on line 8.

$.preloadImages = function() {
       for(var i = 0; i<arguments.length; i++) {
               $("<img />").attr("src", arguments[i]);
       }
}

$(document).ready(function() {
       $.preloadImages("hoverimage1.jpg","hoverimage2.jpg");
});

Source: http://css-tricks.com/snippets/jquery/image-preloader/

Open external links in a new tab/window

The target="blank" attribute allows you to force opening of links in new windows. While it is relevant to open external links in a new tab or window, same domain links should definitely be opened in the same window.

This code detect if a link is external, and if yes, adds a target="blank" attribute to it.

$('a').each(function() {
   var a = new RegExp('/' + window.location.host + '/');
   if(!a.test(this.href)) {
       $(this).click(function(event) {
           event.preventDefault();
           event.stopPropagation();
           window.open(this.href, '_blank');
       });
   }
});

Source: http://css-tricks.com/snippets/jquery/open-external-links-in-new-window/

Div full Width/Height of viewport with jQuery

This handy piece of code allows you to create a full width/height div according to the viewport. The code also handles window resizing. Great for modal dialogs or popups.

// global vars
var winWidth = $(window).width();
var winHeight = $(window).height();

// set initial div height / width
$('div').css({
    'width': winWidth,
'height': winHeight,
});

// make sure div stays full width/height on resize
$(window).resize(function(){
    $('div').css({
    'width': winWidth,
    'height': winHeight,
});
});

Source: http://www.jqueryrain.com/2013/03/div-full-widthheight-of-viewport-with-jquery/

Test password strength

When you let users defining their password, it is generally a good thing to indicate how strong the password is. This is exactly what this code do.

First, assume this HTML:

<input type="password" name="pass" id="pass" />
<span id="passstrength"></span>

And here is the corresponding jQuery code. The entered password will be evaluated using regular expressions and a message will be returned to the user to let him know if his chosen password is strong, medium, weak, or too short.

$('#pass').keyup(function(e) {
     var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
     var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
     var enoughRegex = new RegExp("(?=.{6,}).*", "g");
     if (false == enoughRegex.test($(this).val())) {
             $('#passstrength').html('More Characters');
     } else if (strongRegex.test($(this).val())) {
             $('#passstrength').className = 'ok';
             $('#passstrength').html('Strong!');
     } else if (mediumRegex.test($(this).val())) {
             $('#passstrength').className = 'alert';
             $('#passstrength').html('Medium!');
     } else {
             $('#passstrength').className = 'error';
             $('#passstrength').html('Weak!');
     }
     return true;
});

Source: http://css-tricks.com/snippets/jquery/password-strength/

Image resizing using jQuery

Although you should resize your images on server side (using PHP and GD for example) it can be useful to be able to resize images using jQuery. Here’s a snippet to do it.

$(window).bind("load", function() {
	// IMAGE RESIZE
	$('#product_cat_list img').each(function() {
		var maxWidth = 120;
		var maxHeight = 120;
		var ratio = 0;
		var width = $(this).width();
		var height = $(this).height();
	
		if(width > maxWidth){
			ratio = maxWidth / width;
			$(this).css("width", maxWidth);
			$(this).css("height", height * ratio);
			height = height * ratio;
		}
		var width = $(this).width();
		var height = $(this).height();
		if(height > maxHeight){
			ratio = maxHeight / height;
			$(this).css("height", maxHeight);
			$(this).css("width", width * ratio);
			width = width * ratio;
		}
	});
	//$("#contentpage img").show();
	// IMAGE RESIZE
});

Source: http://snipplr.com/view/62552/mage-resize/

Automatically load content on scroll

Some websites such as Twitter loads content on scroll. Which means that all content is dynamically loaded on a single page as long as you scroll down.

Here’s how you can replicate this effect on your website:

var loading = false;
$(window).scroll(function(){
	if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
		if(loading == false){
			loading = true;
			$('#loadingbar').css("display","block");
			$.get("load.php?start="+$('#loaded_max').val(), function(loaded){
				$('body').append(loaded);
				$('#loaded_max').val(parseInt($('#loaded_max').val())+50);
				$('#loadingbar').css("display","none");
				loading = false;
			});
		}
	}
});

$(document).ready(function() {
	$('#loaded_max').val(50);
});

Source: http://fatfolderdesign.com/173/content-load-on-scroll-with-jquery

Check if an image is loaded

Here’s a snippet I often use when working with images, as it is the best way to know if an image is loaded or not.

var imgsrc = 'img/image1.png';
$('<img/>').load(function () {
    alert('image loaded');
}).error(function () {
    alert('error loading image');
}).attr('src', imgsrc);

Source: http://tympanus.net/codrops/2010/01/05/some-useful…

Sort a list alphabetically

On some cases, it can be very useful a sort a long list by alphabetical order. This snippet take any list and order its element alphabetically.

$(function() {
    $.fn.sortList = function() {
    var mylist = $(this);
    var listitems = $('li', mylist).get();
    listitems.sort(function(a, b) {
        var compA = $(a).text().toUpperCase();
        var compB = $(b).text().toUpperCase();
        return (compA < compB) ? -1 : 1;
    });
    $.each(listitems, function(i, itm) {
        mylist.append(itm);
    });
   }

    $("ul#demoOne").sortList();

});

Source: http://stackoverflow.com/questions/13394796/javascript-jquery-to-sort…

ThemeFuse giveaway: 3 premium WordPress themes to win

A word about Themefuse

ThemeFuse is one of the most popular actors in the premium WordPress themes market. They provide lots of themes with a great design and solid code.
They have lots of different designs for lots of different needs, so you should definitely have a look to their website!

How to enter the giveaway

Scroll down to the bottom of this very post, and leave a comment for us. Tell us how you would implement your new WordPress theme, and why you should be one of our three winners.

Head over to Twitter and spread the word to your followers about this giveaway by tweeting: Win a free copy of @ThemeFuse #WordPress Theme from @catswhocode (RT to Enter).

Let your Facebook friends know how much you enjoy ThemeFuse by visiting the ThemeFuse Facebook page and clicking the “Like” button.

The three winners will be announced here in one week (January 23, 2014), so stay close!

3 one-year subscriptions giveaway from IM Creator

About IM Creator

For those who hear about IM Creator for the first time, it is a free to use web builder that makes it possible to have sites made without the slightest use of code, just as easy as drawing in a graphic editor. This means that you can have your website made in a matter of minutes without having to employ a web designer. It’s quite versatile and at the same time easy to use.

How to Participate

If you are tempted to give it a try, why not do so with a free one year subscription. In order to participate, all you need to do is follow @IMC_official on Twitter and mention them in a tweet along with your favorite template from app.imcreator.com/new. Best of luck!

Top 10 PHP frameworks for 2014

Laravel


Probably the most popular PHP framework right now. Laravel is powerful and elegant while still being easy to learn and use. Definitely worth giving a try!
More info/download

Flight


Flight is a fast, simple, extensible micro framework for PHP which enables you to quickly and easily build RESTful web applications. Easy to use and to learn, simple yet powerful.
More info/download

Yii


Yii is a high-performance PHP framework for developing Web 2.0 applications. Yii comes with rich features: MVC, DAO/ActiveRecord, I18N/L10N, caching, authentication and role-based access control, scaffolding, testing, etc.
More info/download

Medoo


Medoo is the lightest PHP database as it consists of only one file of 10,9kb. A great micro framework for small and simple applications.
More info/download

PHPixie


Originally a fork of the Kohana framework, PHPixie is among my favorite new frameworks: MVC compliant, fast to learn, powerful. You should try it sometime soon!
More info/download

CodeIgniter


Although being a bit old and reaching the end of its life, I definitely love CI which is a great MVC framework. I’ve used it countless times on many project and I never was disappointed.
More info/download

Kohana


Kohana is an open source, object oriented MVC web framework built using PHP5 by a team of volunteers that aims to be swift, secure, and small.
More info/download

Symfony


Created in 2005, Symfony is a very powerful MVC framework and is quite popular in the enterprise world. It was heavily inspired by other Web Application Frameworks such as Ruby On Rails, Django, and Spring. Symfony is probably one of the most complete PHP frameworks.
More info/download

Pop PHP


While some PHP frameworks are pretty complex and intense, Pop has been built with all experience levels in mind. Pop has a manageable learning curve to help beginners get their feet wet with a PHP framework, but also offers robust and powerful features for the more advanced PHP developer.
More info/download

Phalcon


Phalcon is an open source, full stack framework for PHP 5 written as a C-extension, optimized for high performance. You don’t need to learn or use the C language, since the functionality is exposed as PHP classes ready for you to use. Phalcon also is loosely coupled, allowing you to use its objects as glue components based on the needs of your application.
More info/download