X

Benutzerdefinierte Beitragsstatusmeldungen im Adminbereich erstellen

Schnipsel von IsItWP

Möchten Sie für jeden Beitrag, den ein Autor erstellt, eine benutzerdefinierte Statusmeldung hinzufügen? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um benutzerdefinierte Beitragsstatusmeldungen in WordPress im Adminbereich zu erstellen.

Anweisungen:

Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen.

Nur Benutzer mit der Berechtigung publish_posts können den Status ändern, während jeder sieht, wie der Status ist (wenn er festgelegt ist). Sie können die Statusbenachrichtigung entfernen, indem Sie keine auswählen.

add_filter( 'display_post_states', 'custom_post_state' );
function custom_post_state( $states ) {
	global $post;
	$show_custom_state = get_post_meta( $post->ID, '_status' );
	// We are using "None" as a way to disable this feature for the current post.
	if ( $show_custom_state && $show_custom_state[0] != 'None' ) $states[] = '<span class="custom_state ' . strtolower( $show_custom_state[0] ) . '">' . $show_custom_state[0] . '</span>';
	return $states;
}
add_action( 'admin_head', 'status_css' );
function status_css()
{
	echo '
	<!-- Styling of Custom Statuses -->
	<style type="text/css">
		.custom{border-top:solid 1px #e5e5e5;}
		.custom_state{
			font-size:9px;
			color:#666;
			background:#e5e5e5;
			padding:3px 6px 3px 6px;
			-moz-border-radius:3px;
                        -webkit-border-radius:3px;
                        border-radius:3px;
			border-radius:3px;
		}
		.spelling{background:#4BC8EB;color:#fff;}
		.review{background:#CB4BEB;color:#fff;}
		.errors{background:#FF0000;color:#fff;}
		.source{background:#D7E01F;color:#333;}
		.rejected{background:#000000;color:#fff;}
		.final{background:#DE9414;color:#333;}
	</style>';
}
// Only those with the capability should be able to change things.
if ( current_user_can( 'publish_posts' ) ) {
	// Insert our "Custom Status" into the Post Publish Box
	add_action( 'post_submitbox_misc_actions', 'custom_status_metabox' );
	function custom_status_metabox() {
		global $post;
		$custom = get_post_custom( $post->ID );
		$status = $custom["_status"][0];
		$i = 0;
		// Available Statuses
		$custom_status = array( 'None', 'Spelling', 'Review', 'Errors', 'Source', 'Rejected', 'Final' );
		echo '
		<div class="misc-pub-section custom">Custom status:
		<select name="ourstatus">';
			for ( $i = 0; $i < count( $custom_status ); $i++ ) {
				echo '<option value="' . $custom_status[$i] . '"';
				if ( $status == $custom_status[$i] ) echo ' selected="selected"';
				echo '>' . $custom_status[$i] . '</option>';
			}
		echo '</select></div>';
	}
	// Save
	add_action( 'save_post', 'save_status' );
	function save_status( $post_id ) {
		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return $post_id;
		update_post_meta( $post_id, "_status", $_POST["ourstatus"] );
	}
}

Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.

Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: So erstellen Sie beeindruckende WordPress-Opt-in-Formulare und 10 beste WordPress-Testimonial-Plugins.

Kommentare   Hinterlasse eine Antwort

  1. Edson Santoro 6. Juni 2012 um 3:17 Uhr

    GROSSARTIG!!!!!!!!!!!!! Hat mir das Leben gerettet!

  2. Hallo, gibt es eine Möglichkeit, diese Funktion für Nicht-Administratoren in WordPress auszublenden?

    1.  Wenn Sie alle Aspekte für normale Benutzer entfernen möchten, könnten Sie einfach Folgendes mit den Hooks tun:

      if(is_admin()){
      add_action( ‘post_submitbox_misc_actions’, ‘custom_status_metabox’ );
      add_filter( ‘display_post_states’, ‘custom_post_state’ );
      }

      Wenn Sie den Status anzeigen möchten, aber Nicht-Admin-Benutzern nicht die Möglichkeit geben möchten, ihn zu ändern, können Sie dasselbe tun, aber nur mit der Funktion, die die Schnittstellenoptionen anzeigt.

      if(is_admin()){
      add_action( ‘post_submitbox_misc_actions’, ‘custom_status_metabox’ );
      }

      Ich habe dies nicht getestet, aber es sollte funktionieren,

  3. unten, nicht drinnen. 🙂

    1. WHooops 🙂 danke

  4. 29 WordPress-Tweaks zur Verbesserung von Beiträgen und Seiten 18. Oktober 2011 um 09:03 Uhr

    [...] [Quelle: WPSNIPP] [...]

  5. WordPress Update: Benutzerdefinierte Beitragsstatusmeldungen im Adminbereich erstellen – 400+ WordPress Code-Schnipsel für Ihren Blog 19. Juli 2011 um 9:01 Uhr

    [...] WordPress-Theme ermöglicht es Ihnen, benutzerdefinierte Beitragsstatusmeldungen zu erstellen. Dies ist eine aktualisierte Version von (Benutzerdefinierte Beitragsstatusmeldungen im Adminbereich erstellen) mit einigen zusätzlichen Funktionen. Nur Benutzer mit der Berechtigung „publish_posts“ können [...]

  6. Tolles Addon 😉 Ich habe mich gefragt, ob ich es auf meinem WP 3.1.3 ausprobiert habe und es funktioniert großartig. Das Einzige, was ich fragen wollte, ist, wie ich den Status entfernen kann, nachdem der Artikel erneut hochgeladen wurde. Ich habe versucht, „Benutzerdefiniert“ oder „——“ zu verwenden, aber dann wird einer davon auch in der Liste „Beiträge“ angezeigt. 

    1. Der einfache Weg wäre, display:none; auf einen der von Ihnen erstellten Status zu setzen, z. B.: .final{display:none;} Es würde den Status immer noch erstellen, ihn aber nicht anzeigen.

      1. Gabriel Merovingi 16. Juli 2011 um 1:35 Uhr

        Danke dafür! Ich habe Ihren Code angepasst, um den Status zu löschen, wenn er auf „Keine“ gesetzt ist. Ebenfalls enthalten, damit nur diejenigen, die „publish_posts“ können, den Status ändern können, während alle natürlich die gespeicherten Ergebnisse sehen.

        add_filter( ‘display_post_states’, ‘custom_post_state’ );
        function custom_post_state( $states ) {
        global $post;
        $show_custom_state = get_post_meta( $post->ID, ‘_status’ );
        if ( $show_custom_state ) $states[] = ” . $show_custom_state[0] . ”;
        return $states;
        }
        add_action( ‘admin_head’, ‘status_css’ );
        function status_css() {
        echo ‘

        .default{font-weight:bold;}
        .custom{border-top:solid 1px #e5e5e5;}
        .custom_state{font-size:9px; color:#666; background:#e5e5e5; padding:3px 6px 3px 6px; -moz-border-radius:3px; border-radius:3px;}
        .spelling{background:#4BC8EB;color:#fff;}
        .review{background:#CB4BEB;color:#fff;}
        .errors{background:#FF0000;color:#fff;}
        .source{background:#D7E01F;color:#333;}
        .rejected{background:#000000;color:#fff;}
        .final{background:#DE9414;color:#333;}
        ‘;
        }
        if ( current_user_can( ‘publish_posts’ ) ) {
        add_action( ‘post_submitbox_misc_actions’, ‘custom_status_metabox’ );
        add_action( ‘save_post’, ‘save_status’ );
        function custom_status_metabox() {
        global $post;
        $custom = get_post_custom( $post->ID );
        $status = $custom[“_status”][0];
        $i = 0;
        // Available Statuses
        $custom_status = array( ‘None’, ‘Spelling’, ‘Review’, ‘Errors’, ‘Source’, ‘Rejected’, ‘Final’ );

        Benutzerdefinierter Status:

        foreach ( $i = 0; $i < count( $custom_status ); $i++ ) {

        echo '’ . $custom_status[$i] . ”;
        }
        echo ”;
        }
        function save_status( $post_id ) {

        if ( defined( ‘DOING_AUTOSAVE’ ) && DOING_AUTOSAVE ) return $post_id;

        Wenn der Status auf „Keine“ gesetzt ist, möchten wir diese Einstellung löschen.

        else update_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

        if ( $_POST[“ourstatus”] == ‘None’ ) delete_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

        }
        }

        1. Cool Gabriel, schönes Update, du solltest mich über http://wpsnipp.com/contact/ kontaktieren, damit ich das Update mit deinem Namen als Autor posten kann.

        2. Habe den Code leicht modifiziert, deiner hatte Syntaxfehler und du hast „foreach“ statt „for“ verwendet.

          add_filter( ‘display_post_states’, ‘custom_post_state’ );
          function custom_post_state( $states ) {
          global $post;
          $show_custom_state = get_post_meta( $post->ID, ‘_status’ );
          if ( $show_custom_state ) $states[] = ” . $show_custom_state[0] . ”;
          return $states;
          }
          add_action( ‘admin_head’, ‘status_css’ );
          function status_css() {
          echo ‘

          .default{font-weight:bold;}
          .custom{border-top:solid 1px #e5e5e5;}
          .custom_state{font-size:9px; color:#666; background:#e5e5e5; padding:3px 6px 3px 6px; -moz-border-radius:3px; border-radius:3px;}
          .spelling{background:#4BC8EB;color:#fff;}
          .review{background:#CB4BEB;color:#fff;}
          .errors{background:#FF0000;color:#fff;}
          .source{background:#D7E01F;color:#333;}
          .rejected{background:#000000;color:#fff;}
          .final{background:#DE9414;color:#333;}
          ‘;
          }
          if ( current_user_can( ‘publish_posts’ ) ) {
          add_action( ‘post_submitbox_misc_actions’, ‘custom_status_metabox’ );
          add_action( ‘save_post’, ‘save_status’ );
          function custom_status_metabox() {
          global $post;
          $custom = get_post_custom( $post->ID );
          $status = $custom[“_status”][0];
          $i = 0;
          // Verfügbare Statusse
          $custom_status = array( ‘Keine’, ‘Rechtschreibung’, ‘Überprüfung’, ‘Fehler’, ‘Quelle’, ‘Abgelehnt’, ‘Endgültig’ );

          echo ‘Benutzerdefinierter Status: ‘;
          for ( $i = 0; $i < count( $custom_status ); $i++ ) {
          echo '’ . $custom_status[$i] . ”;
          }

          echo ”;
          }
          function save_status( $post_id ) {

          if ( defined( ‘DOING_AUTOSAVE’ ) && DOING_AUTOSAVE ) return $post_id;

          Wenn der Status auf „Keine“ gesetzt ist, möchten wir diese Einstellung löschen.

          else update_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

          if ( $_POST[“ourstatus”] == ‘None’ ) delete_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

          }
          }

          1. hookedonweb_usa 27. Juni 2013 um 12:33 Uhr

            else update_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

            wirft einen Fehler: Undefined index: ourstatus

            Also habe ich das gemacht:

            if ( isset($_POST[“ourstatus”]) == ‘Keine’ ) delete_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

            else update_post_meta( $post_id, “_status”, $_POST[“ourstatus”] );

            wirft denselben Fehler: Undefined index: ourstatus

            also habe ich dasselbe getan:

            if ( isset($_POST[“ourstatus”]) == ‘Keine’ ) delete_post_meta( $post_id, “_status”, isset($_POST[“ourstatus”] ));

            Aber ich kann diesen letzten Fehler nicht beheben:

            Undefined index: ps_right_now in . . . wp-content/plugins/post-status-menu-items/cms_post_status_menu.php

          2. Hallo Antonin,

            Dies ist eine sehr späte Antwort, aber ich wollte Sie wissen lassen, dass ich glaube, dass der letzte Fehler, den Sie erwähnt haben, heute Morgen in Version 1.3.3 von Post Status Menu Items behoben wurde.

  7. So erstellen Sie benutzerdefinierte Status-Icons für benutzerdefinierte Beiträge | WpCode.net 10. Juni 2011 um 23:37 Uhr

    […] ist ein großartiger Schnipsel von Kevin Chard und wenn Sie diesen Schnipsel zu Ihrer function.php hinzufügen, können Sie benutzerdefinierte Icons für benutzerdefinierte Beitragstypen erstellen; aber […]

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!