Link to home
Start Free TrialLog in
Avatar of Karessa
Karessa

asked on

Change a filter function in php

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
Avatar of James Rodgers
James Rodgers
Flag of Canada image

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

Avatar of Karessa
Karessa

ASKER

thanks for the edit, I'll give it a try shortly, why do you not recommend it?
Avatar of Karessa

ASKER

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.
"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.
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

Avatar of Karessa

ASKER

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.
ASKER CERTIFIED SOLUTION
Avatar of James Rodgers
James Rodgers
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Karessa

ASKER

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
Avatar of Karessa

ASKER

It's all good for now, thanks for the help jester!