Brauchen Sie Rat> Konvertieren von Kategorisierungszuweisungen in benutzerdefinierte Post-Metawerte

Bevor ich herausgefunden habe, dass es möglich ist, dem Seiten- und Post-Editor eine Metabox (mit benutzerdefinierten Post-Meta-Selektionen) hinzuzufügen, verwendete ich (und bin immer noch zu einem gewissen Grad) Kategorien, um benutzerdefinierte Post-Metas zu definieren.

Um beispielsweise einen Post NoFollow oder NoIndex zu erstellen, habe ich eine Kategorie namens nofollow und eine andere namens noindex erstellt und eine oder beide Kategorien einem Post oder einer Seite zugewiesen.

Dann würde ich in meiner Datei header.php einen in_category-Test machen, um die passenden Meta-Tags auf die Seite zu schreiben.

Beispiel:

   

Ich habe auch benutzerdefinierte Kategorien für Dinge wie “Disable AdSense für diese Seite”, “Zeige Bildanhänge für diese Seite nicht”, “Diese Seite von Menüs ausblenden”, etc …

Nun, da ich beschlossen habe, Kategorien zu entfernen, in denen ich benutzerdefinierte Post-Meta verwenden sollte, wird der obige Code in header.php stattdessen …

 ID, '_noindex', true ) && get_post_meta( $post->ID, '_nofollow', true )){>?   

Das ist mein Plan, aber jetzt habe ich das Problem, Websites zu aktualisieren, die die alten Möglichkeiten verwenden, benutzerdefinierte Post-Optionen über die Kategoriezuweisungen zu definieren.

Daher benötige ich ein Routing, bei dem die Kategoriewerte den benutzerdefinierten Meta-Postwerten für jeden Post und jede Seite der Website, die ich aktualisiere, zugewiesen werden.

Ich bin nur auf der Suche nach ein paar Tipps, wie man das macht und möglicherweise ein paar Codehinweise für die notwendige Routine.

Da dies ein Thema ist, das im Rahmen des Aktualisierungsprozesses aktualisiert werden kann, möchte ich ein Skript einmal ausführen, wenn das Thema zum ersten Mal installiert wird (oder der Benutzer auf mein Aktualisierungsdienstprogramm klickt), das die Optionstabelle durchläuft und für jede Instanz einer meiner benutzerdefinierten Kategoriezuordnungen erstellt es die erforderliche benutzerdefinierte Metazuweisung für diesen Beitrag oder diese Seite.

Wenn ein Beitrag beispielsweise zur Kategorie “Versteckt” gehört, wird er dem Post-Meta “_hidden” zugewiesen.

Hoffentlich habe ich das gut genug erklärt. Ich schätze alle Einsichten, die Sie zur Verfügung stellen können.

Vielleicht ist es so einfach wie eine Reihe von benutzerdefinierten SQL-statementen, die für jede mögliche Kategoriezuordnung ausgeführt werden?

Solutions Collecting From Web of "Brauchen Sie Rat> Konvertieren von Kategorisierungszuweisungen in benutzerdefinierte Post-Metawerte"

Grundidee wäre es, Posts und ihre Kategorien durchzuschlüsseln und Meta-Übereinstimmungen zuzuordnen.

So etwas (überprüfen Sie die Testkopie der Daten usw.):

 $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 ); } } 

Vergessen, das Löschen nach dem Hinzufügen hinzuzufügen:

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