web-dev-qa-db-fra.com

Besoin d'un conseil> conversion d'assignations de catégorie en méta-valeurs post personnalisées

Avant de découvrir la possibilité d'ajouter une méta-boîte (avec des sélections de méta post personnalisées) à la page et à l'éditeur de post, j'étais (et suis toujours dans une certaine mesure) en utilisant des catégories pour définir des méta post personnalisé.

Par exemple, pour créer un message nofollow ou noindex, j'ai créé une catégorie appelée nofollow et une autre appelée noindex, et affecté l'une de ces catégories ou les deux à un article ou à une page.

Ensuite, dans mon fichier header.php, je ferais un test in_category afin d'écrire les balises méta appropriées sur la page.

Exemple:

<?php
if (in_category('noindex') && in_category('nofollow')){?>
<meta name="robots" content="noindex, nofollow">
<?php}?>

J'ai aussi des catégories personnalisées pour des choses comme "Désactiver Adsense pour cette page", "Ne pas afficher les pièces jointes d'image pour cette page", "Masquer cette page des menus", etc.

Alors maintenant que j’ai décidé de ne plus utiliser de catégories où je devrais utiliser des méta post personnalisées, le code ci-dessus dans header.php devient à la place ...

<?php 
    if (get_post_meta( $post->ID, '_noindex', true ) && get_post_meta( $post->ID, '_nofollow', true )){>?
    <meta name="robots" content="noindex, nofollow">
<?php } ?>

C’est donc mon plan, mais j’ai maintenant le problème de la mise à niveau des sites qui utilisaient l’ancien moyen de définir des options de publication personnalisées via les attributions de catégorie.

Il me faut donc un routage permettant de réaffecter les valeurs de catégorie à des méta-valeurs de publication personnalisées pour chaque publication et page du site en cours de mise à niveau.

Je suis juste à la recherche de conseils rapides sur la façon de procéder et éventuellement de conseils de code sur la routine nécessaire.

Comme il s'agit d'un thème pouvant être mis à jour, dans le cadre du processus de mise à jour, j'aimerais exécuter un script une fois, lors de la première installation du thème (ou lorsque l'utilisateur clique sur mon utilitaire de mise à jour) qui parcourt le tableau des options. et pour chaque instance de l'une de mes attributions de catégorie personnalisées, il crée l'affectation de méta-affectation personnalisée requise pour cet article ou cette page.

Par exemple, si un message appartient actuellement à la catégorie "Caché", il sera affecté au méta "Caché".

Si tout va bien j'ai bien expliqué cela. J'apprécie toutes les idées que vous pouvez fournir.

Peut-être est-ce aussi simple qu'une série d'instructions SQL personnalisées qui s'exécutent pour chaque affectation de catégorie possible?

1
Scott B

L'idée de base serait de parcourir les publications et leurs catégories, en assignant des méta-correspondances.

Quelque chose comme ça (assurez-vous de vérifier la copie test des données, etc., etc.):

$posts = get_posts( array(
    'numberposts' => -1
) );

foreach( $posts as $post ) {

    $categories = get_the_category( $post->ID );

    foreach( $categories as $category ) {

        if( 'Hidden' ==  $category->name )
            add_post_meta( $post->ID, '_hidden', 'yes', true );
    }

}

J'ai oublié d'ajouter la suppression lorsque vous avez terminé:

$category = get_category_by_slug( 'hidden' );
wp_delete_category( $category->term_id );
1
Rarst