WordPress.org

Ready to get started?Download WordPress

Forums

Time Machine
[resolved] excluding post from certain category (8 posts)

  1. pauro
    Member
    Posted 2 years ago #

    Hi,
    I have been a long time user of time-machine plugin, it works great until I found out that I have to exclude some post from some cats. I realize that by default this plugin does not have those function. I did a digging and found this (at line 233):

    $q = "SELECT ID, post_title, post_date, post_excerpt, comment_count FROM $wpdb->posts WHERE post_status='publish' AND post_type <> 'attachment' AND post_type <> 'revision' $tm_private $tm_pages AND $q_range $tm_current ORDER BYpost_dateLIMIT ".$options['posts'];

    I think this is the place to mess around to do what I want. But with my lacks of knowledge of sql's, I need some help coding.
    Logically in human language it probably goes like this:

    get data FROM wpdb->post (like original code above) then cross the data with wpdb->tems NOT IN term ID '1,2,3'.

    Any suggestion appreciated

    pauro

  2. urkekg
    Member
    Plugin Author

    Posted 2 years ago #

    Hello Pauro. Here is dirty fix for this categoy excluding from Time Machine.

    Find line 250 in time-machine.php and replace this code:

    foreach ( $r as $post )
    {
    	// prepare excerpt
    	if ( $tm_excerpt == TRUE ) {
    		$tm_post_excerpt   = $post->post_excerpt;
    		if ( $tm_excerpt_cut == TRUE ) {
    			if ( $tm_excerpt_length && mb_strlen($tm_post_excerpt) > ($tm_excerpt_length+1) ) { $tm_post_excerpt = tm_substr_utf8($tm_post_excerpt, 0, $tm_excerpt_length)."&hellip;"; }
    		}
    	}
    
    	// print formated post line
    	if ( $options['display_commentnum'] == "1" ) { $pcount = ' (<span title="'.__("Number of comments", "tm").'">'.$post->comment_count.'</span>)'; } else { $pcount = ""; }
    	echo '<li>'.substr($post->post_date,0,4).': <a href="'.get_permalink($post->ID).'" title="'.__("Published at", "tm").' '.$post->post_date.'">'.$post->post_title.'</a>'.$pcount.' '.$tm_excerpt_before.$tm_post_excerpt.$tm_excerpt_after.'</li>';
    }

    with this code:

    foreach ( $r as $post )
    {
    	$pcats = get_the_category($post->ID);
    	$no_this = 0;
    	foreach ($pcats as $pcat) {
    		if ( preg_match("/(5|2)/", $pcat->cat_ID) ) { $no_this = 1; }
    	}
    	if ($no_this <> 1) {
    
    		// prepare excerpt
    		if ( $tm_excerpt == TRUE ) {
    			$tm_post_excerpt   = $post->post_excerpt;
    			if ( $tm_excerpt_cut == TRUE ) {
    				if ( $tm_excerpt_length && mb_strlen($tm_post_excerpt) > ($tm_excerpt_length+1) ) { $tm_post_excerpt = tm_substr_utf8($tm_post_excerpt, 0, $tm_excerpt_length)."&hellip;"; }
    			}
    		}
    
    		// print formated post line
    		if ( $options['display_commentnum'] == "1" ) { $pcount = ' (<span title="'.__("Number of comments", "tm").'">'.$post->comment_count.'</span>)'; } else { $pcount = ""; }
    		echo '<li>'.substr($post->post_date,0,4).': <a href="'.get_permalink($post->ID).'" title="'.__("Published at", "tm").' '.$post->post_date.'">'.$post->post_title.'</a>'.$pcount.' '.$tm_excerpt_before.$tm_post_excerpt.$tm_excerpt_after.'</li>';
    
    	} //no_this
    }

    And also replace in line if ( preg_match("/(5|2)/", $pcat->cat_ID) ) { $no_this = 1; } numbers 5|2 with category ID's you wish to exclude, separated with pipe sign |.

  3. pauro
    Member
    Posted 2 years ago #

    Nicely done,perfect solution, thank you so much.

  4. swf2002
    Member
    Posted 2 years ago #

    Hello great plugin. I want to show just one Category and to exlcude: 5,2,28,57,10,8,20,2,4,29,3,56

    How this must to look?

    if ( preg_match("/(5|2|28|57|10|8|20|2|4|29|3|56)/", $pcat->cat_ID) ) { $no_this = 1; }

    is not working

    Thanks

  5. swf2002
    Member
    Posted 2 years ago #

    I want to use that plugin for a "On this day is happen:". This data will be take from category with ID=58. I want to exclude all other categories. When I write all my categires instead of 58 ... it is no work, when I take from the list just one of the category it is work but I want to show only CAT=58... and none from others. Can you help?

  6. urkekg
    Member
    Plugin Author

    Posted 2 years ago #

    Huh, w/o digging code again, instead of using if( preg_match... ) use exact match

    if ( $pcat->cat_ID != 58 ) { $no_this = 1; }

    Does this dirty hack works as U expected?

  7. swf2002
    Member
    Posted 2 years ago #

    Work perfect. Thanks!

  8. swf2002
    Member
    Posted 2 years ago #

    urkekg, just one simple question. What can be the reasson the changes of the plugin to show years ago events from can 58 to be change not in 00:00 my time, because in 1:30 AM they are stil from previos date. On the morning, about 7:00 AM they are with correct date. I assume is somthing with the time zone. My wordpress clock is correctly setup as our time in Bulgaria +3:00 GMT.

    Thanks

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic