Wo sollte ich den notwendigen Code hinzufügen, um ein zusätzliches Attribut zum kses erlaubt Tags-Array hinzuzufügen?

Beim Versuch, einen Artikel auf einem der neuen SE-Blogs zu posten, stieß ich auf das folgende Problem. Ich bin als Autor aufgeführt, was bedeutet, dass meine Fähigkeiten eingeschränkt sind. Insbesondere darf ich kein beliebiges HTML posten, sondern meine Einträge werden zuerst über den kses-Parser gesendet. Dies scheint im Allgemeinen eine gute Sache zu sein (ich will nicht für das HTML verantwortlich gemacht werden!), Aber es stört ein Stück des Markdown-processors: Zitate. Ich kann nicht schreiben:

> this is a quote 

weil das > durch die kses routinen entkommt. Jetzt ist es schwierig, den Kses-Code zu modifizieren, um dies zuzulassen, und er ist die falsche Lösung (weil er den kses Parser zu stark zum Markdown stricken würde; eigentlich wäre die richtige Lösung, die Daten nach der Verarbeitung zu validieren) , aber das macht nichts …). Das ist kein großes Problem, da ich natürlich die

...

-Tags direkt verwenden kann. Nur das schaltet den Markdown-processor aus. Da wir PHPMarkdownExtra verwenden (zumindest scheinen Tests darauf hin zu deuten, dass wir es sind), kann ich das Fake-Attribut markdown markdown="1" , um Markdown innerhalb der Blockquote einzuschalten. Aber dies wird von kses entfernt, da es nicht auf der Liste der zugelassenen Attribute steht!

Das Hinzufügen von markdown zur Liste der genehmigten Attribute scheint jedoch wesentlich einfacher zu sein als das Hinzufügen der Unterstützung für die Syntax > quote ; Insbesondere gibt es ein Array $allowedposttags , das diese Information enthält, so dass es bedeutet, dieses Array einfach zu ändern.

Aber, und das ist die Frage, wo ist der richtige Ort, um diese Modifikation zu machen? Das Ändern von kses.php ist kses.php der letzte kses.php . Meine Vermutung wäre, dass der richtige Ort für die Datei ” markdown.php ” wäre, um diese Änderung markdown.php (da das die Datei ist, die weiß, dass Markdown verwendet wird). Aber wenn ich nichts ändern möchte, was stromaufwärts geändert werden könnte, wo sollte ich die erforderliche Änderung vornehmen?

(Wenn ich oben “Ich” sage, meine ich nicht “Ich”, weil ich möchte, dass dies auf den SE-Blogs geändert wird, also bitte erklären Sie es in einer Sprache, die Rebecca Chernoff verstehen kann!)

Solutions Collecting From Web of "Wo sollte ich den notwendigen Code hinzufügen, um ein zusätzliches Attribut zum kses erlaubt Tags-Array hinzuzufügen?"

Im Detail gibt es die Konstante CUSTOM_TAGS , die erlaubt, $allowedposttags, $allowedtags, $allowedentitynames .

Dann können Sie CUSTOM_TAGS einfach auf CUSTOM_TAGS true” setzen und die Globals in einer function definieren, die angehängt wird, bevor kses eingeschlossen wird.

Der erste verfügbare Hook zum $allowedposttags einer Aktion, die $allowedposttags definiert, wäre muplugins_loaded , aber ich weiß nicht, ob kses vor oder nach ihm geladen wird.

 // Set custom tags to override $allowedposttags, $allowedtags, $allowedentitynames if ( ! defined( 'CUSTOM_TAGS' ) ) define( 'CUSTOM_TAGS', true ); 

Sie haben auch die wp_kses_hook() , die einen selbsterklärenden Filter enthält:

 apply_filters('pre_kses', $string, $allowed_html, $allowed_protocols);