Solved

Change a filter function in php

Posted on 2014-02-26
9
292 Views
Last Modified: 2014-03-04
Hi,

I'd like to change this code but can't seem to figure it out. On page load there is a link/button selected called "ALL". Then two other links/buttons are loaded from Wordpress portfolio categories Web and Branding. I'd like to make Web the default item and be selected and the ALL no longer appear.

Line 15 in the code is where the All filter is, then just below that is where it loads the other categories

add_shortcode('filterable_portfolio', 'vp_filterable_portfolio');
function vp_filterable_portfolio($atts, $content=null) {
	extract(shortcode_atts(array(
		'categories' => '',
		'number' => 15
	), $atts));
	$id = rand(1, 50000);
	$output = '<div class="filterable-' . $id . '">';
	global $post;
	$categories = esc_attr($categories);
	$categories = str_replace(' ', '', $categories);
	$output .= '<div class="filter-categories sixteen columns">
				<div class="filter">
					<ul>
						<li><a href="" data-filter="*" class="selected">ALL</a></li>';
	if($categories == '')
	{
		$cats = get_categories();
		foreach($cats as $cat) {
			$output .= '<li><a href="" data-filter=".' . $cat->term_id . '">' . $cat->name . '</a></li>';
		}
	}
	else
	{
		$cats = explode(",", $categories);
		foreach($cats as $cat) {
			$cat_details = get_category($cat);
			$output .= '<li><a href="" data-filter=".' . $cat . '">' . $cat_details->name . '</a></li>';
		}
	}

	$output .= '</ul>
				</div> <!-- end filter -->

Open in new window


Thanks for the help, hopefully I copied out enough code. Here is a link to a demo site where the code is in use. Click on Work and you'll see the ALL then Beautiful Cars etc http://demo.teothemes.com/?theme=scrn
0
Comment
Question by:Karessa
  • 5
  • 4
9 Comments
 
LVL 25

Expert Comment

by:James Rodgers
Comment Utility
EDIT: added the web check

i don't recommend doing this but it should work and get rid of the all option, update the above to:

add_shortcode('filterable_portfolio', 'vp_filterable_portfolio');
function vp_filterable_portfolio($atts, $content=null) {
	extract(shortcode_atts(array(
		'categories' => '',
		'number' => 15
	), $atts));
	$id = rand(1, 50000);
	$output = '<div class="filterable-' . $id . '">';
	global $post;
	$categories = esc_attr($categories);
	$categories = str_replace(' ', '', $categories);
	$output .= '<div class="filter-categories sixteen columns">
				<div class="filter">
					<ul>';
					//	<li><a href="" data-filter="*" class="selected">ALL</a></li>';
	if($categories == '')
	{
		$cats = get_categories();
		foreach($cats as $cat) {
			$selected='';
			if ($cat =="Web")[
				$selected='selected';
			}
			$output .= '<li><a href="" data-filter=".' . $cat->term_id . '" class="'.$selected.'">' . $cat->name . '</a></li>';
		}
	}
	else
	{
		$cats = explode(",", $categories);
		foreach($cats as $cat) {
		$selected='';
			if ($cat =="Web")[
				$selected='selected';
			}
			$cat_details = get_category($cat);
			$output .= '<li><a href="" data-filter=".' . $cat . '" class="'.$selected.'">' . $cat_details->name . '</a></li>';
		}
	}

	$output .= '</ul>
				</div> <!-- end filter -->
                                  

Open in new window

0
 

Author Comment

by:Karessa
Comment Utility
thanks for the edit, I'll give it a try shortly, why do you not recommend it?
0
 

Author Comment

by:Karessa
Comment Utility
jester,

update on this, so yes the all button is gone thanks

but on page load the web is not selected, no item is selected. can you help me figure that piece out?

thanks for the assistance.
0
 
LVL 25

Expert Comment

by:James Rodgers
Comment Utility
"thanks for the edit, I'll give it a try shortly, why do you not recommend it? "

anything that is in a core package, WordPress core, plugin, etc. that gets changed without using an action or filter hook will be overwritten in an update.

So a year from now, someone will run an update, the page will look different and the developer will have forgotten what was changed to make it the way it was. someone will spend time, probably unpaid, to track down what changed and correct it.
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 25

Expert Comment

by:James Rodgers
Comment Utility
went a littel to quick for my own good, variable names in the for each were wrong

add_shortcode('filterable_portfolio', 'vp_filterable_portfolio');
function vp_filterable_portfolio($atts, $content=null) {
	extract(shortcode_atts(array(
		'categories' => '',
		'number' => 15
	), $atts));
	$id = rand(1, 50000);
	$output = '<div class="filterable-' . $id . '">';
	global $post;
	$categories = esc_attr($categories);
	$categories = str_replace(' ', '', $categories);
	$output .= '<div class="filter-categories sixteen columns">
				<div class="filter">
					<ul>';
					//	<li><a href="" data-filter="*" class="selected">ALL</a></li>';
	if($categories == '')
	{
		$cats = get_categories();
		foreach($cats as $cat) {
			$selected='';
			if ($cat->name  =="Web")[
				$selected='selected';
			}
			$output .= '<li><a href="" data-filter=".' . $cat->term_id . '" class="'.$selected.'">' . $cat->name . '</a></li>';
		}
	}
	else
	{
		$cats = explode(",", $categories);
		foreach($cats as $cat) {
		$selected='';
			if ($cat_details->name =="Web")[
				$selected='selected';
			}
			$cat_details = get_category($cat);
			$output .= '<li><a href="" data-filter=".' . $cat . '" class="'.$selected.'">' . $cat_details->name . '</a></li>';
		}
	}

	$output .= '</ul>
				</div> <!-- end filter -->
                                  

Open in new window

0
 

Author Comment

by:Karessa
Comment Utility
Jester,

Appreciate the point on updating, it's a child theme type situation in WP so updates won't overwrite the code change and I'm pretty meticulous note taker for update and changes.

The code change does now select Web but it also selects every other category as well. I have 4, Web, Branding, Social, IT. on page load my hope was to have Web be selected and the 6 images load that belong to that category, the other 3 would not be selected until clicked on.

Make sense? do you need any additional info to help?

thanks again for you assistance.
0
 
LVL 25

Accepted Solution

by:
James Rodgers earned 250 total points
Comment Utility
do you have a link to the page?

sunds like the category name compre is not functioning properly, need to see teh utput
0
 

Author Comment

by:Karessa
Comment Utility
the site is under construction and locked out except for admin accounts. I don' t mind sending you temp log in info but I don't want to post it here in the clear? you have somewhere ti can send it?

thanks
0
 

Author Comment

by:Karessa
Comment Utility
It's all good for now, thanks for the help jester!
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Both Easy and Powerful How easy is PHP? http://lmgtfy.com?q=how+easy+is+php (http://lmgtfy.com?q=how+easy+is+php)  Very easy.  It has been described as "a programming language even my grandmother can use." How powerful is PHP?  http://en.wikiped…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now