Get various taxonomy queries and information

Unfortunately (in my eyes)I haven’t found a way inside a post or page to query what taxonomies have beenused to apply terms. This for me would be a bit of a holy grail.

Anyeway – these are the bits and pieces I have developed when trying to get various bits and pieces of information from taxonomies and terms applied to a page or post.

Get the current page ID


<?php

$thePostID = $post->ID;
 echo $thePostID;

?>

Get both the Taxonomy Name and Slug


<?php
// Get both the Taxonomy Name and Slug
 $terms = get_taxonomy( 'slide-type-location' );
 $taxonomySlug = $terms->name;
 $taxonomyName = $terms->label;
 echo "<br/>";
 echo $taxonomySlug;
 echo "<br/>";
 echo $taxonomyName;
?>

Get Taxonomy Term (archive – taxonomy.php) link


<?php
// Get Taxonomy Term (archive - taxonomy.php) link
 $taxTitle = get_the_term_list( get_the_ID(), 'slide-type-location', '', ', ', '' );
 echo "<br/>";
 echo $taxTitle;
?>

Get Taxonomy Term Slug


<?php
// Get Taxonomy Term Slug
 $terms_as_text = strip_tags( get_the_term_list( $wp_query->post->ID, 'slide-type-location', '', ', ', '' ) );
 echo "<br/>";
 echo $terms_as_text;
?>

Check for Terms applied from a specified Taxonomy and print info or add it variables

This code is very useful as it provides a foreach loop where you can do something for each term found.

<?php
	// Check for Terms applied from a specified Taxonomy and print info or add it variables
	$terms = get_the_terms( $post->ID , 'slide-type-location' );
	// Loop over each item since it's an array
	foreach( $terms as $term ) {
		// Print the name method from $term which is an OBJECT
		print 'This slider is intended for the ';
		print $term->name;
		$TaxName = $term->slug;
		print '<br />';
		print $TaxName;
		print '<br />';
		// Get rid of the other data stored in the object, since it's not needed
		unset($term);
	}
	//Here we echo a variable set in the foreach loop after it has finished.
	// This may be useful for posts/pages where only one term is being a applied.
	echo $TaxName;
	echo "<br/>";
?>

Check for a Taxonomy Terms and execute code

<?php
<!--This code checks for taxonomy terms and allows specific code to runs if they are found.-->
<?php if (is_object_in_term($post->ID,'slide-type-location','Home Page')) : ?>
    <!--Yes this has the term 'Home Page' - do some code here.-->
<?php elseif (is_object_in_term($post->ID,'slide-type-location','News Page')) : ?>
    <!--Yes this has the term 'News Page' - do some code here.-->
<?php else : ?>
    <!--None of the above terms where found - do some code here iof necessary.-->
<?php endif; ?>
?>

How to create a tag cloud with your custom taxonomies

<?php wp_tag_cloud( array( 'taxonomy' => 'people', 'number' => 45 ) ); ?>

Untested: Redirect term archives to posts

<?php
<pre><code>add_action( 'template_redirect', 'my_redirect_term_to_post' );

function my_redirect_term_to_post() {
	global $wp_query;

	if ( is_tax() ) {
		$term = $wp_query->get_queried_object();

		if ( 'actor' == $term->taxonomy ) {
			$post_id = my_get_post_id_by_slug( $term->slug, 'person' );

			if ( !empty( $post_id ) )
				wp_redirect( get_permalink( $post_id ), 301 );
		}
	}
}

function my_get_post_id_by_slug( $slug, $post_type ) {
	global $wpdb;

	$slug = rawurlencode( urldecode( $slug ) );
	$slug = sanitize_title( basename( $slug ) );

	$post_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = %s", $slug, $post_type ) );

	if ( is_array( $post_id ) )
		return $post_id[0];
	elseif ( !empty( $post_id ) );
		return $post_id;

	return false;
}</code></pre>
?>

Taken from this great page on Justoin Tadlocks website:
http://justintadlock.com/archives/2010/08/20/linking-terms-to-a-specific-post

Function to check for a Taxonomy Term & do something

<pre>
<pre>
<pre>
<pre><?php 

<pre><code>function has_person( $person, $_post = null ) {
	if ( empty( $person ) )
		return false;

	if ( $_post )
		$_post = get_post( $_post );
	else
		$_post =& $GLOBALS['post'];

	if ( !$_post )
		return false;

	$r = is_object_in_term( $_post->ID, 'person', $person );

	if ( is_wp_error( $r ) )
		return false;

	return $r;
}</code></pre>
</pre>
</pre>
?></pre>
</pre>

Revisions

There are no revisions for this post.

Tags: , ,

No comments yet.

Leave a Reply