Solved

Change a filter function in php

Posted on 2014-02-26
9
297 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
ID: 39892674
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
ID: 39893412
thanks for the edit, I'll give it a try shortly, why do you not recommend it?
0
 

Author Comment

by:Karessa
ID: 39893878
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 25

Expert Comment

by:James Rodgers
ID: 39894594
"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
 
LVL 25

Expert Comment

by:James Rodgers
ID: 39894599
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
ID: 39895269
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
ID: 39895358
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
ID: 39896042
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
ID: 39904486
It's all good for now, thanks for the help jester!
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
The viewer will learn how to count occurrences of each item in an array.
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 …

809 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