Ändern Sie das Postformat mit einem benutzerdefinierten Feld

Ich erstelle ein Theme mit dem CF Post Formats Plugin. Aber ich habe Probleme, die ich nicht lösen kann. Folgendes möchte ich tun können:

  • Erstellen Sie einen neuen Post im Standardformat
  • Geben Sie eine URL in das benutzerdefinierte Feld _format_link_url ein
  • Wenn das benutzerdefinierte Feld nicht leer ist, ändern Sie beim Speichern / Aktualisieren das Post-Format in “Link”; ansonsten, bleib “Standard”.

Aus irgendeinem Grund kann ich set_post_format in diesem Kontext nicht verwenden (vielleicht gibt es ein in Konflikt stehendes Update?). Ich möchte, dass die Dinge auf diese Weise funktionieren, weil ich Marssedit (das Postformate nicht unterstützt) weiterhin verwenden kann, um Inhalte in meinem Blog einzureichen. Da Marsedit benutzerdefinierte Felder unterstützt, denke ich, dass ich damit das Postformat automatisch aktualisieren kann. Jede Hilfe wäre willkommen.

Update: Okay, ich habe das meistens zum arbeiten gebracht. Es funktioniert perfekt innerhalb der Admin-Weboberfläche. Über das Webinterface kann ich einen Link Post mit einer URL erstellen und es spart gut. Ich kann versuchen, den Beitrag in einen Zitat-Post zu ändern, aber beim Aktualisieren kehrt er zu einem Link-Post zurück (wie vorläufig beabsichtigt). Ich kann die URL aus dem benutzerdefinierten Feld löschen und beim Update wird der Post zu einem Standardpost.

Wenn Sie jedoch einen Link-Beitrag von Marssedit erstellen oder aktualisieren, wird das benutzerdefinierte Feld ordnungsgemäß verwendet, das Post-Format wird jedoch als Standard festgelegt. Frustrierend. Die function, die ich erstellt habe, ist unten. Was vermisse ich?

function gateway_set_post_format( $post_id ) { $the_post_format = get_post_format( $post_id ); if ( $the_post_format == 'link' && empty($_POST['_format_link_url'])) { set_post_format( $post_id, '' ); } elseif ( !empty($_POST['_format_link_url']) ) { set_post_format( $post_id, 'link' ); } } add_action('save_post', 'gateway_set_post_format',11, 1); 

Solutions Collecting From Web of "Ändern Sie das Postformat mit einem benutzerdefinierten Feld"

Wenn das Plugin so funktioniert, wie ich es denke, könnten Sie versuchen, die Priorität Ihrer function gateway_set_post_format , die der save_post-Aktion hinzugefügt wird, zu ändern.

Ihr Plugin könnte eine größere Prioritätsnummer haben, die es später als Ihre feuern würde.

Wenn das Plugin den Wert des benutzerdefinierten Felds erst nach dem Ausführen der function ändert, könnte das das aktuelle Verhalten erklären.

 add_action('save_post', 'gateway_set_post_format',999, 1); 

Ich hoffe, du hast es aussortiert.