Suchen Sie nach einer Möglichkeit, Ihren benutzerdefinierten Beitragstyp standardmäßig als privat zu erzwingen? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um benutzerdefinierte Beitragstypen in WordPress als privat zu erzwingen.
Anweisungen:
Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:
function force_type_private($post)
{
if ($post['post_type'] == 'my_post_type')
$post['post_status'] = 'private';
return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
Vergessen Sie nicht, my_post_type in den Namen Ihres benutzerdefinierten Beitragstyps zu ändern. Dies ist eine geringfügige Änderung am Quellcode und enthält kein Passwort, da dies privat und nicht passwortgeschützt ist.
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, sollten Sie sich unsere anderen Artikel auf der Website ansehen, wie z. B.: 28 beste WordPress-Lebenslauf-Themes und So erstellen Sie ein Bewerbungsformular in WordPress.
Hallo,
Irgendeine Idee, wie man den gleichen Code für 2 verschiedene CPTs statt für einen macht?
Vielen Dank im Voraus
Ich weiß, dass dieser Thread etwas alt ist, aber... wie kann man ein benutzerdefiniertes Feld in diesem benutzerdefinierten Beitragstyp ansprechen, um seinen Wert zu ändern?
Ich habe es bearbeitet, sodass Links beim Erstellen auf den Beitragstitel statt auf „my_post_type/auto-draft“ gesetzt werden. Auf diese Weise können Sie auch passwortgeschützte Beiträge veröffentlichen.
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] == ‘publish’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
Das funktioniert, aber ich habe festgestellt, dass es unmöglich wird, den Beitrag in den Papierkorb zu verschieben... Haben Sie das auch erlebt?
Nein, dieses Problem hatte ich nicht, aber ich werde es ausprobieren und sehen, ob ich das Problem reproduzieren kann.
Ja, ich habe genau das gleiche Problem... Hat jemand Ideen?
Warum machen Sie nicht einfach: if ( post type = my post type) { post status = private; return post; }
Es scheint, als hätten Sie eine zusätzliche unnötige Zeile.
Das stimmt, Adam, behoben.
Ist dieser Code korrekt?
Ich glaube, Sie haben ein „ELSE“ vergessen
Hallo Jose,
Nein, es ist korrekt, erstellen Sie einfach einen neuen benutzerdefinierten Beitragstyp und fügen Sie dies dann zu functions.php hinzu, und Sie werden feststellen, dass bei der Auswahl von „Neuen Beitrag hinzufügen“ für diesen benutzerdefinierten Beitragstyp standardmäßig „Privat“ ausgewählt ist.
Hallo Kevin,
Immer noch keine Möglichkeit, meine Beiträge mit diesem Code zu löschen. Irgendwelche Ideen?
Mit freundlichen Grüßen,
Ich habe Code wie diesen verwendet, der prüft, ob sie sich im Papierkorb befinden, bevor er sie privat macht:
//Erzwinge Beiträge vom benutzerdefinierten Typ „internt-arkiv“, privat zu sein
//…aber stelle zuerst sicher, dass sie nicht „Papierkorb“ sind, sonst ist es unmöglich, einen Beitrag in den Papierkorb zu legen
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] != ‘trash’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
[…] Dieser Beitrag wurde auf Twitter von HTMLfrp, wp_freak erwähnt. wp_freak sagte: #wordpress Erzwinge benutzerdefinierten Beitragstyp privat zu sein http://bit.ly/fHzJuW […]