kaxigt.com

Jag skriver om webben för webben

Förhindra poster i WordPress från autosaving

Postad: 26 september 2009 | Wordpress | No Comments
Lästid: < 1 minut

WordPress har en inbyggd funktion som gör att den automatiskt sparar din post flera gånger under tiden som du skriver posten fram till att du publicerar den. Det kallas för auto-saving och post-revision.

Vad många inte vet är att förutom posten så sparar WordPress också alla de automatiska backuper som gjorts fram till att inlägget är postat. Din databas fylls alltså med en massa skräp från inte färdigskrivna poster.

Med tiden blir det en hel del som kommer att stjäla plats.

Denna post innehåller kod-snippar som du kan använda. Det är alltid bra att ta en backup av din stilmall och funktionsfil innan.

Att förhindra autosaving och postrevisions

Vi ska nu kika på två alternativ att förhindra detta. I det ena använder vi filen functions.php som ligger i din temamapp. I det andra alternativet ska vi använda filen wp-config.php som ligger i roten (för de flesta). Vi börjar med functions.php.

Öppna functions.php och lägg in följande kod, den är det enda som behövs för att förhindra auto-saving.

<?php function disableAutoSave(){ wp_deregister_script('autosave'); } add_action( 'wp_print_scripts', 'disableAutoSave' ); ?>

I nästa alternativ ska vi använda filen wp-config.php – öppna denna. Leta dig ned till följande avsnitt:

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Direkt här under ska vi lägga in två nya definitioner, den ena för att förhindra auto-saving och den andra för att stoppa post-revisions.

define( 'AUTOSAVE_INTERVAL', 600 ); // 60= 1 HOUR.
define ('WP_POST_REVISIONS', 0);    //  TURN OFF POST REVISIONS.

Så här kommer det alltså att se ut när det är klart:

<?php
// ** MySQL settings ** //
define('DB_NAME', '*database*'); // The name of the database
define('DB_USER', '*username*');  // Your MySQL username
define('DB_PASSWORD', '*password*');  // ...and password
define('DB_HOST', 'localhost');  // 99% chance you won't need to change this value
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');  // TURN OFF AUTO-SAVE AND SAVING REVISIONS
// THEY ARE MAKING A GOOD AWEFL MESS OF MY DB AND MESSING UP SETTINGS WHEN WRITING!
define( 'AUTOSAVE_INTERVAL', 600 );  // 60= 1 HOUR.
define ('WP_POST_REVISIONS', 0);  //  TURN OFF POST REVISIONS.

Rensa databasen med en enkel mysql_query

För att också se till att rensa databasen från allt skräp som redan sparats så ska vi lägga in en liten enkel mysql_query i wp-config.php.

Läs nu noggrant!

I din wp-config.php så ska du leta dig ända ned till botten i dokumentet så du kommer till följande kod:

require_once(ABSPATH . ‘wp-settings.php’);

Klistra in denna query:

mysql_query("DELETE FROM `wp_posts` WHERE `post_status` = 'revision'");

De sista koderna i dokumentet kommer alltså att se ut så här:

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
mysql_query("DELETE FROM `wp_posts` WHERE `post_status` = 'revision'");
?>

VIKTIGT!

1) Skicka upp filen wp-config.php
2) Ladda upp vilken sida som helst i din WordPress en gång.
3) Tag sedan bort koden mysql_query("DELETE FROM `wp_posts` WHERE `post_status` = 'revision'"); från filen wp-config.php

Nu ska alla post revisions och auto savings vara borta.