it-swarm.com.de

Wie veröffentliche ich einen Beitrag mit leerem Titel und leerem Inhalt?

Warum mache ich das? Ich entwickle eine Website für ein Unternehmen mit einem Portfolio, bei dem es sich bei den Galerieobjekten um Posts handelt. Diese Beiträge werden durch benutzerdefinierte Felder und Kategorieauswahlen gefüllt, sonst nichts.

Für jeden Artikel kann es einen Titel/Inhalt geben oder nicht, dies hängt vom jeweiligen Artikel ab und liegt ganz beim Kunden. Sie bevölkern ihr Portfolio und nicht ich. Ich baue nur das System auf, damit sie einfach veröffentlichen können, was sie wollen.

Mir ist klar, dass WordPress einige Probleme mit Beiträgen ohne Titel haben kann. Deshalb habe ich (in functions.php) eine Funktion implementiert, um automatisch einen Titel für den Beitrag festzulegen, wenn keiner zugeordnet wurde. Dieser automatische Titel des Beitrags wird niemals auf der Website angezeigt, da ich danach suche und ihn weglasse, wenn er dort ist. Andernfalls wird der dem Beitrag zugewiesene Titel angezeigt.

Die Funktion dafür ist:

add_action('publish_post', 'insert_automatic_post_title', 10, 2);

function insert_automatic_post_title($postID, $post) {
    if($post->post_title === '') {
        $post->post_title = '['.get_the_date('d/m/Y @ H:i:s').']';

        if($post->post_name == $postID) {
            $post->post_name = sanitize_title($post->post_title);
        }

        $result = wp_update_post($post);
    }
}

Das einzige Problem ist, dass, wenn der Titel leer ist und der Inhalt ebenfalls leer ist (mit einigen bereits definierten benutzerdefinierten Feldern), die oben genannte Funktion niemals aufgerufen wird und der Beitrag nicht veröffentlicht wird, er im Entwurfsstatus bleibt.

Die einzige Lösung, die ich mir vorstellen konnte, war, einen Shortcode wie [empty_post] zu erstellen und den Kunden zu bitten, diesen Code für den Inhalt des Posts festzulegen, wenn er dem Post keinen Titel/Inhalt zuweisen möchte. Dieser Shortcode könnte so etwas wie <!-- EMPTY POST --> oder gar nichts ausgeben. Die Tatsache, dass sich etwas im Inhalt des Posts befindet, die oben genannte Funktion wird aufgerufen, ein automatischer Titel wird festgelegt und der Post wird veröffentlicht.

Aber ich suche nach einer Möglichkeit, bei der der Client nicht mehr Probleme haben muss (z. B. das Einfügen eines Shortcodes in den Inhalt des Posts) als nötig. Ich möchte, dass es so einfach wie möglich ist. Natürlich ohne mit dem WordPress-Quellcode herumzuspielen.

Kann sich jemand einen anderen Weg mit Aktionen/Filtern vorstellen?

3
Ricardo Amaral

Wenn der Inhalt des Beitrags, der Titel und der Auszug leer sind WordPress verhindert das Einfügen des Beitrags . Sie können WordPress austricksen, indem Sie zuerst das Eingabearray filtern, damit leere Werte auf einen anderen Wert gesetzt werden, und diese Werte später auf leere Zeichenfolgen zurücksetzen. Dies umgeht die Standardprüfung.

add_filter('pre_post_title', 'wpse28021_mask_empty');
add_filter('pre_post_content', 'wpse28021_mask_empty');
function wpse28021_mask_empty($value)
{
    if ( empty($value) ) {
        return ' ';
    }
    return $value;
}

add_filter('wp_insert_post_data', 'wpse28021_unmask_empty');
function wpse28021_unmask_empty($data)
{
    if ( ' ' == $data['post_title'] ) {
        $data['post_title'] = '';
    }
    if ( ' ' == $data['post_content'] ) {
        $data['post_content'] = '';
    }
    return $data;
}
9
Jan Fabry

Eine schnelle und schmutzige Lösung wäre, Javascript/jQuery zu verwenden ... eine Erkennung durchzuführen, um zu prüfen, auf welchem ​​Beitragstyp er ausgeführt wird. Dann gehen Sie folgendermaßen vor:

  1. suchen Sie das Feld für den Post-Titel

  2. verstecke das Feld für den Post-Titel

  3. füllen Sie das Feld für den Beitragstitel automatisch aus

Die meisten WordPress-Backends arbeiten sowieso mit Javascript, und die Wahrscheinlichkeit, dass ein Benutzer den Administrator ohne JS verwendet, ist gering. Und selbst wenn dies passiert, können Sie eine Warnung/Meldung erkennen und hinzufügen.

0
farinspace

Ich würde diese einfach in DIVs verpacken und display:none in meinem CSS verwenden.

0
AndrettiMilas

Dieses Plugin ( Auto Title ) ist veraltet, funktioniert aber gut für meine 4.3.1-Installation von WP. Dies kann Ihnen helfen, den Titel mit benutzerdefinierten Feldern und Kategorieauswahlen gemäß Ihrer Aufgabenstellung zu füllen

0
Pete