Stäng kommentarer vid ny dag i WordPress

by Stefan on 8 december, 2011

Wordpress

Den 1 december drog jag igång en julkalender på Biggest-Loser.se där besökarna kan tävla om träningsredskap värda tusentals kronor. Varje lucka pågår från 00:01 till 23:59  på kvällen varpå kommentarerna stängdes manuellt (många sena kvällar).

Efter funderingar om att utveckla ett eget, onödigt avancerat, plugin med möjlighet att automatiskt stänga kommentarsfältet vid ett klockslag så kastade jag ut frågan på Twitter varpå Fredrik Johansson hörde av sig idag. Det är för övrigt en intressant person som, likt mig, tjänar pengar på internet men istället för hälsobranschen så ligger hans fokus på bland annat fotoframkallning. Efter ett kort samtal på Skype så kom han med den geniala idén att helt enkelt utgå ifrån vilken kategori inläggen ligger i. Samtliga julkalender-inlägg ligger trots allt i samma kategori.

Resultatet:

function closeComments() {
	global $post;
	if(in_category('45') && comments_open()){
		if(get_the_time('j') != date_i18n('j')){
			global $wpdb;
			$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET comment_status = %s WHERE ID = %d", 'closed', $post->ID ) );
			header('Location: ' . get_permalink(), true, 302);
			exit;
		}
	}
}
add_action('wp','closeComments');

Först kontrollerar funktionen om inlägget ligger i julkalender-kategorin och om kommentarerna är öppna. Om så är fallet så kontrolleras publiceringsdatumet mot dagens datum. Om det skiljer sig så betyder det att klockan är över 24:00 varpå databasen uppdateras och sidan laddas om för att dölja kommentarsfältet.

Funktionen läggs in i functions.php som tillhör temat.

Lärdomen? Ibland behöver det inte vara komplicerat för att fungera.

{ 4 comments… read them below or add one }

N!cklas 9 december, 2011 kl. 12:01

Tack! Det ser ut att bli användbart
Tipsa WpRecipes så kanske du får en fin inlänk ;)

Svara

Stefan 9 december, 2011 kl. 14:01

Tack för tipset. Tänkte inte i de banorna men har lämnat mitt bidrag nu och får hoppas på det bästa.

Svara

John 2 januari, 2012 kl. 16:59

Är detta script strikt till endast när ett datum ändras eller går det att göra så att efter 5 timmar stängs kommentarer, efter 5 timmar igen öppnas kommentarerna? Har en lustig idé på G som behöver något i stil med det. Om det går att lösa i WordPress vore det ju toppen. :D

Svara

Stefan 5 januari, 2012 kl. 15:55

Visst är det möjligt men det kräver en del förändringar såsom kontroll av tiden. Istället för att kontrollera så att det inte är samma dag så kan du lägga in jämförelse mellan olika klockslag.

Svara

Leave a Comment

Previous post:

Next post: