Migrating Markdown (von Drupal)

Ich bin dabei, meinen Blog von Drupal nach WordPress zu migrieren. Ich habe Markdown in den ursprünglichen Posts (und Geshi Syntax Highlighting) liberal verwendet.

In sehen, dass das WP-Markdown-Plugin beim Speichern (und Bearbeiten) in (und aus HTML) konvertiert, also habe ich jetzt eine Reihe von Beiträgen, die mit dem Markdown ‘on show’ erscheinen.

Gibt es einen API-Aufruf, den ich verwenden kann, um effektiv eine “Bearbeiten und Speichern” -Operation für jeden Beitrag zu machen, um das Markdown-auf-Speichern-Plugin zu erzwingen, um auf allen zu operieren?

Oder alternativ ein anderes Markdown-Plugin, das ich ausprobieren sollte?

Solutions Collecting From Web of "Migrating Markdown (von Drupal)"

Hinweis: Das Folgende ist weitgehend ungetestet (es funktionierte nach dem Testen auf einem Post).

Wie Sie beim Bearbeiten eines Posts darauf hingewiesen haben, übernimmt das Plug-in den Inhalt der database (HTML) und konvertiert diesen in MarkDown zur Bearbeitung. Da in Ihrem Fall der Inhalt nicht in HTML, sondern bereits in MarkDown ist, möchten wir dies verhindern. Anschließend sollte das Plug-In den MarkDown durch Aktualisieren des Posts in HTML konvertieren.

Dies sollte ziemlich einfach zu tun sein, da dieses Parsing nur an einige Filter angeschlossen ist. Sie entfernen einfach die entsprechenden Callbacks, um zu verhindern, dass das Plug-in etwas unternimmt. (Andererseits, angesichts der classnstruktur des Plugins, vielleicht ist es nicht ganz so einfach ). Gegebenenfalls möchten Sie die Plug-In-Dateien nur manuell bearbeiten, um die Filter zu entfernen.

Die betreffenden Filter werden hier hinzugefügt .

add_filter( 'edit_post_content', array( $this, 'wpautop' ), 10, 2 ); add_filter( 'edit_post_content', array( $this, 'edit_post_content' ), 10, 2 ); 

Diese zu entfernen (manuell oder auf andere Weise) und dann jeden der Beiträge zu aktualisieren, sollte funktionieren. Aber das könnte eine Weile dauern, also lass uns eine automatisierte Lösung machen …

  function wpse65948_correct_markdown(){ //Only run script if ?markdown=correct is set if( empty($_GET['markdown']) || 'correct' !== $_GET['markdown'] ) return; if( !current_user_can('publish_posts') ) return; //Do a query to get all posts that are expected to contain markdown //Typically will be decided by post type. Set post_status to 'any'. $markdowns = get_posts( array( 'fields'=>'ids', 'post_type'=>'post', 'post_status'=>'any', ) ); //If no posts found abort. if( !$markdowns ) return; /** !Important * At this point the filters should be removed. Either remove them now * or ensure they have been manually removed prior to triggering this script. */ foreach ($markdowns as $pid ){ // Get the content for editing $markdown = get_post_to_edit( $pid ); //$markdown->post_content should contain the correct MarkDown $update_post = array(); $update_post ['ID'] = $pid; $update_post ['post_content'] = $markdown->post_content; //Update the post into the database wp_update_post( $update_post); } } add_action('admin_init','wpse65948_correct_markdown',20); 

Sie sollten dieses Skript zuerst mit einem Ihrer Beiträge testen, um zu überprüfen, ob es funktioniert, bevor es für den Rest ausgeführt wird.

Das Skript kann am Ende der Datei wp-markdown.php oder functions.php hinzugefügt functions.php . Nach Gebrauch wieder entfernen . Um das Skript auszulösen, fügen Sie einfach ?markdown=correct an eine Admin-URL an.

Wenn Sie die Filter vor dem Ausführen dieses Skripts manuell entfernen, müssen Sie sie erneut ersetzen.