Ändern Sie den Text auf der Schaltfläche Veröffentlichen

Gibt es eine Möglichkeit, den Text der Veröffentlichungsschaltfläche für einen benutzerdefinierten Beitragstyp zu ändern, um etwas anderes zu sagen? Zum Beispiel, Speichern statt Veröffentlichen. Und entfernen Sie auch den Entwurfsknopf?

Solutions Collecting From Web of "Ändern Sie den Text auf der Schaltfläche Veröffentlichen"

Wenn Sie in /wp-admin/edit-form-advanced.php , finden Sie die Meta-Box:

 add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core'); 

Beachten Sie das __('Publish') – die function __() führt zu translate() wo Sie den Filter 'gettext' .

Es gibt zwei Möglichkeiten, Ihr Problem zu behandeln: 1. Adressieren Sie die Zeichenfolge in einer einzelnen spezialisierten function (stellen Sie sicher, dass die richtige Textdomäne übereinstimmt!), Oder 2. verwenden Sie einen allgemeineren Ansatz.

@Rarst hat gerade Version 1 gepostet, also werde ich Version 2 hinzufügen. 🙂

 < ?php /* Plugin Name: Retranslate Description: Adds translations. Version: 0.1 Author: Thomas Scholz Author URI: http://toscho.de License: GPL v2 */ class Toscho_Retrans { // store the options protected $params; /** * Set up basic information * * @param array $options * @return void */ public function __construct( array $options ) { $defaults = array ( 'domain' => 'default' , 'context' => 'backend' , 'replacements' => array () , 'post_type' => array ( 'post' ) ); $this->params = array_merge( $defaults, $options ); // When to add the filter $hook = 'backend' == $this->params['context'] ? 'admin_head' : 'template_redirect'; add_action( $hook, array ( $this, 'register_filter' ) ); } /** * Conatiner for add_filter() * @return void */ public function register_filter() { add_filter( 'gettext', array ( $this, 'translate' ), 10, 3 ); } /** * The real working code. * * @param string $translated * @param string $original * @param string $domain * @return string */ public function translate( $translated, $original, $domain ) { // exit early if ( 'backend' == $this->params['context'] ) { global $post_type; if ( ! empty ( $post_type ) && ! in_array( $post_type, $this->params['post_type'] ) ) { return $translated; } } if ( $this->params['domain'] !== $domain ) { return $translated; } // Finally replace return strtr( $original, $this->params['replacements'] ); } } // Sample code // Replace 'Publish' with 'Save' and 'Preview' with 'Lurk' on pages and posts $Toscho_Retrans = new Toscho_Retrans( array ( 'replacements' => array ( 'Publish' => 'Save' , 'Preview' => 'Lurk' ) , 'post_type' => array ( 'page', 'post' ) ) ); 

Sie müssen den Code nicht als Plugin verwenden. Es in die function functions.php Ihres Themas zu integrieren ist genug.

Aktualisieren

Um die ursprüngliche Schaltfläche “Speichern” zu entfernen (nicht sicher, was die Schaltfläche “Entwurf” ist), fügen Sie Ihrem functions.php / a-Plugin den folgenden Code hinzu:

 add_action( 'admin_print_footer_scripts', 'remove_save_button' ); function remove_save_button() { ?> < ?php } 

Ja, es ist hässlich.

Der Code für hakres Vorschlag, einen Übersetzungsfilter zu verwenden, wäre etwa so:

 add_filter( 'gettext', 'change_publish_button', 10, 2 ); function change_publish_button( $translation, $text ) { if ( $text == 'Publish' ) return 'Save'; return $translation; } 

Dies ist keine vollständige Antwort, sondern einige Richtungen: Jeder angezeigte Text übertrifft einen Übersetzungsfilter und kann daher in einer Callback-function (Hook) geändert werden. Wenn der Hook nur auf der Seite registriert ist, auf der Sie das ändern möchten, ist die Arbeit erledigt.

Der Entwurfsknopf könnte “entfernt” werden, indem er über CSS versteckt wird. Das CSS könnte mit einem weiteren Callback in das -Tag des Admins eingefügt werden. Ich denke, der Filter heißt admin_head dafür. Es ist irgendwie schmutzig, da die Schaltfläche immer noch vorhanden ist, zum Beispiel wenn ein Benutzer CSS ausschaltet.

Ein anderer Ansatz wäre, die Metabox zu entfernen und dann dieselbe Box mit unterschiedlichen Werten neu zu registrieren, namentlich den Veröffentlichungstext.

Siehe die Diskussion, die ich hier hatte , um eine Meta-Box zu verschieben, sollten Sie in der Lage sein, etwas Ähnliches anzuwenden, um das Veröffentlichen von Text umzubenennen.

Aus Gründen der Konsistenz gehe ich davon aus, dass Sie lieber “Speichern” anstelle von “Veröffentlichen” in WordPress verwenden möchten, anstatt nur auf den Text der Schaltfläche.

Meta-Box

Beitragsliste

Basierend auf der Lösung von @Rarst habe ich den Code so erweitert, dass viele (alle?) Anderen Instanzen des Wortes “Veröffentlichen” in die entsprechende Variante von “Speichern” übersetzt werden.

 add_filter("gettext", "translate_publish_post_status", 10, 2); add_filter("ngettext", "translate_publish_post_status_number", 10, 5); add_filter("ngettext_with_context", "translate_publish_post_status_number", 10, 6); function translate_publish_post_status($translation, $text) { switch($text) { case "Publish": return "Save"; case "Published on: %1\$s": return "Saved on: %1\$s"; case "Publish immediately": return "Approve immediately"; case "Publish on: %1\$s": return "Approve on: %1\$s"; case "Privately Published": return "Privately Saved"; case "Published": return "Saved"; case "Save & Publish": return "Save"; //"Double-save"? :) default: return $translation; } } function translate_publish_post_status_number($translation, $single, $plural, $number, $domain) { if($translation == "Published (%s)") { return "Saved (%s)"; } return $translation; } 

Zum Entfernen der Schaltfläche Entwurf enthält die Antwort von @toscho eine gute Lösung.

Sie können den Knopf einfach über jQuery finden und den Textknoten für etwas anderes tauschen. Das wäre ein Kinderspiel.

Viel sauberere und einfachere Lösung.

 function change_publish_btn_txt() { echo ""; } add_action('admin_footer-post-new.php', 'change_publish_btn_txt', 99);