web-dev-qa-db-fra.com

WordPress en tant qu'application Web - enregistrez toujours automatiquement les données de poste et les métadonnées

Il est possible de créer plus souvent une version de sauvegarde automatique de WordPress et de faire en sorte que la version de sauvegarde automatique soit toujours la version la plus récente - comme vous le feriez avec google docs. Cela voudrait dire que le bouton de mise à jour n'est pas nécessaire. vous visitez une publication ou un type de publication personnalisé, effectuez votre modification, puis cliquez sur une autre partie de l'administrateur et vos modifications sont toujours enregistrées. L'enregistrement de tous les champs personnalisés lors de l'enregistrement automatique serait essentiel. (Peut-être que nous verrons cela dans WordPress version 5.0;)

Voici mon problème: je veux insérer des liens utiles dans des boîtes à méta postant des liens vers d'autres zones de l'administrateur, mais je ne peux pas mettre un gros avertissement à côté de chaque lien, invitant l'utilisateur à enregistrer en premier! Aucune suggestion?

1
dwenaus

Définir un intervalle de sauvegarde automatique personnalisé

Il suffit de le définir dans votre fichier wp-config.php

// Allow revisions
define( 'WP_POST_REVISIONS', true);
// Set number of ms
define( 'AUTOSAVE_INTERVAL', 300 );

Notez que cela signifie que vous allez recevoir beaucoup de requêtes et publier des révisions. Par conséquent, vous devriez également ajouter un max. nombre de révisions pour ne pas remplir votre tableau de messages avec des éléments inutiles.

// You need to calculate this very precise.
// If someone needs a long time to write the document, old revisions get trashed
define( 'WP_POST_REVISIONS', 20 );

Interroger le statut de la 'révision'

Vous devrez le faire via un plug-in personnalisé qui se connecte à 'plugins_loaded' pour intercepter les clauses principales de posts de requête.

function intercept_post_clauses( $pieces, $class )
{
    $pieces['where'] = str_replace( ".post_status = 'publish'", ".post_status = 'revision'", $pieces['where'] );

    return $pieces;
}
function mod_post_clauses()
{
    add_filter( 'posts_clauses', 'intercept_post_clauses', 20, 2 );
}
add_action( 'plugins_loaded', 'mod_post_clauses' );

Remarque: Ce code n'est pas testé, mais écrit directement ici.


Remarque: Je ne pense pas que ce soit une bonne idée. Le problème est qu’il n’y aura plus de système de révision réel. Lorsque le nombre de révisions est trop élevé, la table des messages contient instantanément des centaines de messages redondants. Si vous le réglez trop bas, il n’y aura plus de véritable révision, car vous perdez votre ancienne révision après

XY ms × # of revisions.

Donc, si quelqu'un reste plus longtemps sur un écran de post-édition que le temps calculé, les révisions seront simplement perdues.

2
kaiser