Smush bildkomprimering

Eftersom gratisversionen av WordPress pluginet Smush bara tillåter max 50 bilder åt gången vid optimering uppfann vi ett script i Jquery som triggar knappen automatiskt varje gång den avbryter komprimeringen. Lägg följande kod direkt i functions.php.

function ellibot_smush(){?>
<script>
	jQuery(function($){	
		push_smush_button();
		function push_smush_button(){	
			console.log($(".wp-smush-exceed-limit").css("display"));	
			if($(".wp-smush-exceed-limit").css("display") == "block"){	
				var d = new Date();
				var time = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();	
				$(".wp-smush-all").trigger("click");
				console.log("Smushit: "+time);
			}
			
			//Kör script en gång i minuten
			setTimeout(push_smush_button, 60000);
			
		}
	});
</script>
<?php }
add_action( 'admin_head', 'ellibot_smush' );

Hook för att omvandla svenska tecken åäö i WordPress RSS Feed

Detta skript omvandlar svenska tecken som å,ä och ö till rätt entitet i WordPress RSS Feed som ibland kan ha problem med just dessa tecken.

function ellibot_wp_rss_decoder($content) {
	return html_entity_decode($content);
}
add_filter('the_excerpt_rss', 'ellibot_wp_rss_decoder',1);
add_filter('the_content_feed', 'ellibot_wp_rss_decoder',1);

Sortera poster och kategorier i bokstavsordning med å, ä och ö

MySql klarar inte av att sortera poster i bokstavsordning som börjar med å, ä eller ö.
Detta är ett problem då man vill hämta ut poster i WordPress i bokstavsordning med argumentet:  orderby => title. Denna funktionen nedan gör så att posterna som hämtas hamnar i rätt ordning, även de vars titlar börjar med å, ä eller ö.

//Sortera poster och kategorier i bokstavsordning med å, ä och ö
function interaktivmedia_reorder_alphabetically($posts){
	$oldArr = array(); $titleArr = array(); $newArr = array();
	foreach($posts as $p){
		$oldArr[] = $p;
		if(isset($p->post_title)){$titleArr[] = $p->post_title;}	//Om post
		else if(isset($p->name)){$titleArr[] = $p->name;}		//Om kategori
	}
	asort($titleArr);
	foreach($titleArr as $key => $value){
		$newArr[] = $oldArr[$key];
	}
	return $newArr;
}

För att använda funktionen anger du enligt exempel nedan:

$args = array("post_type" => "page");
$posts = interaktivmedia_reorder_alphabetically(get_posts($args));

Hantering av versioner/revisioner

För att stänga av versionshantering helt anger du följande i din settings.php:

define( ‘WP_POST_REVISIONS’, false );

För att senare sätta på versionshanteringen igen anger du:

define( ‘WP_POST_REVISIONS’, true );

Om du vill sätta en max gräns för antal versioner anger du:

define( ‘WP_POST_REVISIONS’, 3 );

Om du vill bestämma en viss intervall för hur ofta din post ska autosparas skriver du:

define( ‘AUTOSAVE_INTERVAL’, 600 );

Om du vill radera alla tidigare versioner anger du i din MySql editor:

DELETE from wp_posts WHERE post_type = “revision”;

Eller så lägger du in följande kodrad i din functions.php:

global $wpdb;
$wpdb->query("DELETE FROM wp_posts WHERE post_type = 'revision'");

Radera användare direkt i functions.php

require_once(ABSPATH.'wp-admin/includes/user.php' );
 $current_user = wp_get_current_user();
 wp_delete_user( $current_user->ID );

Skapa användare direkt i functions.php

function wpb_admin_account(){
$user = 'Username';
$pass = 'Password';
$email = 'email@domain.com';
if ( !username_exists( $user ) && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
} }
add_action('init','wpb_admin_account');

WordPress och Chrome 45 bugg

I och med Chrome version 45 så framstår en bygg i vänstermenyn i admin WordPress.
För att bli av med buggen ska du göra följande:

  1. Skriv in i Chromes URL-fält: chrome://flags/#disable-slimming-paint
  2. Aktivera ”Inaktivera slimming paint”
  3. Starta om Chrome

Flytta en multisite till en annan multisite i WordPress

Här får du reda på hur du enkelt flyttar en webbplats som ligger i en multisite-installation i WordPress till en annan multisite-installation.

1. Ta reda på vilket siteId/BlogId din webbplats har, detta kan du bland annat göra genom att ange följande i ditt tema för aktuell sajt: get_current_blog_id();

2. Öppna för att redigera databasen där den sajten du vill flytta finns, lämpligtvis i PhpMyAdmin.

3. Exportera alla de tabeller som börjar med Prefix_id, Exempelvis wp_11.. Inga andra tabeller ska behöva exporteras.

I vissa fall kan olika plugins ha egna tabeller i databasen. Se över om det något där som också behöver exporteras.

4. Öppna den exporterade databasfilen i en texteditor och byt ut alla statiska länkar från den tidigare domänadressen till den nya domänadressen. ”Sök efter adress1.se -> Ersätt med adress2.se”.

5. Öppna databasen i den nya installationen (PhpMyAdmin). Lägg till en ny rad i tabellen wp_blogs och en annan rad i wp_registration_log och ange den nya webbplatsens data manuellt. Se till att ange rätt Siteid.

6. Kopiera och flytta över webbplatsens uppladdade mediefiler från mappen uploads/sites/SiteId.

7. Kopiera och flytta över webbplatsens tema från mappen: wp_content/themes. Se till att du byter alla statiska länkar även här (css-filen exempelvis). Sök efter adress1.se -> Ersätt med adress2.se”. Se även till att sökvägen blir rätt om du ändrar temats namn.

8. Logga in i din nya installation och klicka på: Mina webbplatser -> Nätverksadmin -> Webbplatser. Klicka där sedan på din nya webbplats och välj användare för att lägga till en administratör för den nya sajten.

9. Aktivera ditt nya tema för nätverket på: Mina webbplatser -> Nätverksadmin -> Teman. Se även till att eventuella plugins finns tillgängliga för aktivering.

10. Logga in på den nya webbplatsen och välj sedan aktuellt tema och aktivera eventuella plugins.

Klart!

 

 

Blockera inloggning från WordPress Mobile App

Det finns tillfällen då man inte vill att WordPress redaktörer ska kunna logga in och redigera en webbplats från någon annanstans än från just WordPress egna administrationsgränssnitt.

Detta är idag möjligt som standard i WordPress och går att göra via XML-RPC.

För att blockera detta ska du lägga in följande kodrad i din functions.php:

add_filter('xmlrpc_enabled', '__return_false');

 

Fix för felmeddelandet: Call to undefined function get_current_screen()

Lägg följande kodrad på rad #22 i filen: /wp-admin/network/settings.php

if ( ! function_exists( 'get_current_screen' ) ) return;