Meine Posts werden als Entwürfe gespeichert

Ich habe vor kurzem hinzugefügt diese function in diesem Beitrag gefunden , um meine Beiträge Titel Grenze der Zeichen von 200 auf benutzerdefinierte Länge zu erhöhen, ist das Problem jetzt, dass, wenn ich auf Veröffentlichen klicken, die Beiträge als Entwürfe gespeichert werden und ich kann es nicht veröffentlichen, weil ich habe nur 2 Möglichkeiten

  • Ausstehende Bewertung
  • Entwurf

Hier ist die function, die ich meiner functionsdatei hinzugefügt habe:

<?php remove_filter( 'sanitize_title', 'sanitize_title_with_dashes' ); // add our custom hook add_filter( 'sanitize_title', 'wpse8170_sanitize_title_with_dashes', 10, 3 ); function wpse8170_sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) { $title = strip_tags($title); // Preserve escaped octets. $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); // Remove percent signs that are not part of an octet. $title = str_replace('%', '', $title); // Restore octets. $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); if (seems_utf8($title)) { if (function_exists('mb_strtolower')) { $title = mb_strtolower($title, 'UTF-8'); } $title = utf8_uri_encode($title, 1000); //  

Solutions Collecting From Web of "Meine Posts werden als Entwürfe gespeichert"

Sie müssen lediglich die aktuelle function sanitize_title_with_dashes von https://core.trac.wordpress.org/browser/tags/4.6/src/wp-includes/formatting.php#L1948 kopieren und die folgende Zeile ändern:

 $title = utf8_uri_encode($title, 200); 

Zu diesem:

 $title = utf8_uri_encode($title, 1000); 

Minor edit: Beziehe dich immer auf die Quelle für die gleiche Version von WordPress, die du installiert hast. In den meisten Fällen sollte es die aktuelle Version sein.

Das von Ihnen verwendete Skript stimmt nicht mit der aktuellen function von formata.php überein ( Unterschiede hier vergleichen ). Insbesondere erscheinen die folgenden zwei Zeilen, nachdem die Bedingung if ( 'save' == $context ) in der ursprünglichen function ausgetriggers wurde:

 $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = str_replace('.', '-', $title); 

Beispiel

Im Folgenden finden Sie die gleiche function wie ” wpse8170_sanitize_title_with_dashes als Ihre neue function ” wpse8170_sanitize_title_with_dashes . Nur der Wert in utf8_uri_encode() wurde geändert:

 function wpse8170_sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) { $title = strip_tags($title); // Preserve escaped octets. $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); // Remove percent signs that are not part of an octet. $title = str_replace('%', '', $title); // Restore octets. $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); if (seems_utf8($title)) { if (function_exists('mb_strtolower')) { $title = mb_strtolower($title, 'UTF-8'); } $title = utf8_uri_encode($title, 1000); } $title = strtolower($title); if ( 'save' == $context ) { // Convert nbsp, ndash and mdash to hyphens $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title ); // Convert nbsp, ndash and mdash HTML entities to hyphens $title = str_replace( array( ' ', ' ', '–', '–', '—', '—' ), '-', $title ); // Strip these characters entirely $title = str_replace( array( // iexcl and iquest '%c2%a1', '%c2%bf', // angle quotes '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba', // curly quotes '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d', '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f', // copy, reg, deg, hellip and trade '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2', // acute accents '%c2%b4', '%cb%8a', '%cc%81', '%cd%81', // grave accent, macron, caron '%cc%80', '%cc%84', '%cc%8c', ), '', $title ); // Convert times to x $title = str_replace( '%c3%97', 'x', $title ); } $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = str_replace('.', '-', $title); $title = preg_replace('/[^%a-z0-9 _-]/', '', $title); $title = preg_replace('/\s+/', '-', $title); $title = preg_replace('|-+|', '-', $title); $title = trim($title, '-'); return $title; } 

Ich habe es behoben, das Problem war, dass post_name Spalte in Posts Tabelle auf VARCHAR (200) gesetzt, so habe ich das zu LONGTEXT ändern, weil der Permalink immer post_name von dort bekommt, wenn es auf postname gesetzt ist, habe ich nur dies zu meiner functionen-Datei hinzufügen und dann deaktiviere dann aktiviere ich sie

 function change_tab_length() { global $wpdb; $table_name = $wpdb->prefix. "posts"; global $charset_collate; $charset_collate = $wpdb->get_charset_collate(); global $db_version; $wpdb->get_var("alter table ".$table_name." change post_name post_name LONGTEXT CHARACTER SET utf8"); } add_action( 'init', 'change_tab_length');