it-swarm.com.de

Titel für Seiten erforderlich

Gibt es eine Möglichkeit, Benutzer zu zwingen, vor dem Veröffentlichen einen Seitentitel zu schreiben? Ich habe ein Beispiel dafür gefunden, dass Post-Titel, aber keine Seitentitel erforderlich sind.

2
Cody

Beginnen Sie mit dem Herunterladen des Plugins Force Post Title .

Hier ist das Plugin mit einer Zeile (2 mit der Kommentarzeile) am Ende, basierend auf unseren Kommentaren.

Was passiert ist, dass ein kleines jQuery-Skript zur SeiteBeitrag erstellen/Seitehinzugefügt wird. Das Skript prüft, ob das Titelfeld leer ist, wenn der Benutzer auf die Senden-Schaltfläche klickt.

Da dies ein so kleines Plugin ist, können Sie es leicht modifizieren und in Ihre functions.php kopieren. Auf diese Weise müssen Sie kein vorhandenes Plugin bearbeiten, was Ihnen nach einem späteren Update Kopfzerbrechen bereitet.

Ich sollte auch erwähnen, dass ich etwas gefunden habe (einen Filter), der in wp-includes/post.php, Zeile 2489 funktionieren könnte. Ich habe ein paar schnelle Tests gemacht, aber ohne Ergebnisse.

/*
Plugin Name: Force Post Title
Plugin URI: http://appinstore.com
Description: Forces user to assign a Title to a post before publishing 
Author: Jatinder Pal Singh
Version: 0.1
Author URI: http://appinstore.com/
*/ 
function force_post_title_init() 
{
  wp_enqueue_script('jquery');
}
function force_post_title() 
{
  echo "<script type='text/javascript'>\n";
  echo "
  jQuery('#publish').click(function(){
        var testervar = jQuery('[id^=\"titlediv\"]')
        .find('#title');
        if (testervar.val().length < 1)
        {
            jQuery('[id^=\"titlediv\"]').css('background', '#F96');
            setTimeout(\"jQuery('#ajax-loading').css('visibility', 'hidden');\", 100);
            alert('POST TITLE is required');
            setTimeout(\"jQuery('#publish').removeClass('button-primary-disabled');\", 100);
            return false;
        }
    });
  ";
   echo "</script>\n";
}
add_action('admin_init', 'force_post_title_init');
add_action('edit_form_advanced', 'force_post_title');
// Add this row below to get the same functionality for page creations.
add_action('edit_page_form', 'force_post_title');
5
hampusn

Ich habe gerade @hampusn Antwort ein wenig geändert, um die Integration besser zu machen. Anstatt eine alert() zu verwenden, wird ein hübsch formatiertes Kästchen unter dem Titel platziert.

Es umschließt den jQuery-Code mit der Standardfunktion .ready().

Ich wollte es auch nur für einen bestimmten benutzerdefinierten Post-Typ tun, also habe ich das Snippet in gelassen, aber Sie können einfach den $post_type-Check entfernen, wenn zukünftige Leser dies nicht benötigen.

Schließlich habe ich die Validierungsnachricht in _() eingewickelt. Sie können diesen Typ theoretisch pro Beitrag anpassen, wenn Sie ihn in der Hauptanweisung if neu zuweisen möchten.

function rtp_force_post_title_init() 
{
  wp_enqueue_script('jquery');
}
function rtp_force_post_title( $post ) 
{
  $post_type = get_post_type();
  $validation_message = _("The title field must be filled out.");

  if('exhibitor' === $post_type) {
    echo "<script type='text/javascript'>\n";
    echo "
    jQuery( document ).ready(function() {
      jQuery('#publish').click(function(){
        var testervar = jQuery('[id^=\"titlediv\"]').find('#title');
        if (testervar.val().length < 1)
        {
          setTimeout(\"jQuery('#ajax-loading').css('visibility', 'hidden');\", 100);
          var validator_snippet = '<div style=\"padding: 10px; color: #fff; margin-top: -3px; background: #F55E4F;\">" . $validation_message . "</div>';                    
          jQuery('[id^=\"titlediv\"]').find('#titlewrap').append(validator_snippet);          
          setTimeout(\"jQuery('#publish').removeClass('button-primary-disabled');\", 100);
          return false;
        }
      });
    });\n";
    echo "</script>\n";
  }
}
add_action( 'admin_init', 'rtp_force_post_title_init' );
add_action( 'edit_form_after_title', 'rtp_force_post_title' );
0
rtpHarry