Support » Plugin: Custom Upload Dir » [Plugin: Custom Upload Dir] Path based on Taxonomy?

Viewing 4 replies - 1 through 4 (of 4 total)
  • Hey – so i hacked your code – feel free to use it. Basically I created a new term you can add to get the first term from a custom taxonomy. There is the skeleton to make it do more, but you can at least get 1 term and make it the path.

    add this after line 106
    $customdir = (strpos($customdir, '%post_taxonomy_%') !== false)? cud_find_and_replace_taxonomies($post_id,$customdir): $customdir;

    and then after the function cud_get_categories_name, add

    #/--------------- HACK - START ----------------------------\
    function cud_find_and_replace_taxonomies($post_id,$customdir){
    	//$prefix = "%post_taxonomy_%";
    	//$postfix = "%_post_taxonomy%";
    	//str_replace($prefix.$postfix,"josh-test01", $customdir);
    	return cud_find_and_replace_taxonomies_helper($post_id,$customdir);
    function cud_find_and_replace_taxonomies_helper($post_id,$customdir){
    	$prefix = "%post_taxonomy_%";
    	$postfix = "%_post_taxonomy%";
    	$prefix_length = strlen($prefix);
    	$postfix_length = strlen($postfix);
    	$prefix_index = strpos($customdir,$prefix);
    	$postfix_index = strpos($customdir,$postfix);
    	if(($prefix_index !== false) && ($postfix_index !== false)){
    		$str_left = substr($customdir,0,$prefix_index);
    		$postfix_ending_index = $postfix_index+$postfix_length;
    		$str_right_length = strlen($customdir)-$postfix_ending_index;
    		$str_right = substr($customdir,$postfix_ending_index,$str_right_length);
    		$prefix_ending_index = $prefix_index+$prefix_length;
    		$taxonomyName = substr($customdir,$prefix_index+$prefix_length,$postfix_index-$prefix_ending_index);
    		return cud_find_and_replace_taxonomies_helper($post_id,$str_left.cud_get_taxonomy($post_id,$taxonomyName).$str_right);
    		clear all unused with placeholders
    		return str_replace($prefix,"-cud-pr-", str_replace($postfix,"-cud-po-", $customdir));
    function cud_get_taxonomy($post_id,$taxonomyName){
    	return cud_get_taxonomies($post_id,$taxonomyName,1);
    function cud_get_taxonomies($post_id,$taxonomyName,$count){
    	$terms_array = get_the_terms($post_id,$taxonomyName);
    		$terms = array();
    		if($count == -1){
    			foreach($terms_array as $term_object){
    				$terms[] = $term_object->slug;
    			for ( $counter = 0; $counter < count($terms_array) && $counter < $count; $counter += 1) {
    				$terms[] = $terms_array[$counter]->slug;
    		return implode('-', $terms);
    		return "_".$taxonomyName;
    #\--------------- HACK - END   ----------------------------/

    Then in cud_option_page, add the following to $placeholder
    'post_taxonomy_%%_post_taxonomy' => __('The post\'s first term in the specified taxonomy. Place taxonomy name between the two delimiters', 'cud'),

    Please contact me if you want the php file.

    Plugin Author ulfben


    Beautiful, thank you very much for helping out!

    I’d love to get some details on your use case for taxonomies. I’m not a heavy blog user myself and am not sure what taxanomies are or how they’re used in practice.

    It seems your hack requires a new way of using the configuration panel – requiring a prefix and postfix.

    I suggest we allow users to input ‘%taxanomy-name%’ instead (‘taxanomy-name’ would obviously be whatever taxonomy you want to build a path from). If there’s no terms defined we throw that part (of the path) out.

    Makes sense?

    Oh yes – your idea works much better – I just wanted something i could code up quickly; clearly your solution would be more elegant.

    I can write you offline about my use case so not to clutter the forms

    Plugin Author ulfben


    This is in version 3.3 btw. Sorry for not updating the thread. You can use %category%, %tags% or any of your own custom taxonomies straight up.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘[Plugin: Custom Upload Dir] Path based on Taxonomy?’ is closed to new replies.