Ist es möglich, Anhänge in WordPress zu planen?

Wie es ziemlich bekannt ist, ist es möglich, Posts in WordPress für die Veröffentlichung zu planen.

Auch Anhänge sind eigentlich Posts (in der mehr internen, technischen Bedeutung).

Die Frage, die mich im Moment beschäftigt, ist: Ist es möglich, Anhänge zu planen? Wie zum Beispiel, dass eine Fotogalerie mit der Zeit wächst?

Solutions Collecting From Web of "Ist es möglich, Anhänge in WordPress zu planen?"

Meine Idee ist, dass Sie ein Post-Datum für die Anhänge einrichten können. Dies kann mit attachment_fields_to_edit geschehen, um die Benutzeroberfläche touch_time (möglich ist die interne function touch_time ).

Danach können Sie alle Anlagen-Abfrage filtern, um nur die Anlagen mit einem vergangenen oder aktuellen Datum anzuzeigen.

Damit

 add_action('load-post.php', 'setup_attachment_fields'); function setup_attachment_fields() { $scr = get_current_screen(); if ( $scr->post_type === 'attachment' ) { add_filter("attachment_fields_to_edit", "add_date_to_attachments", null, 2); } } function add_date_to_attachments( $form_fields, $post = NULL ) { printf('', __('Date')); touch_time( 1, 1, 0, 1 ); return $form_fields; } 

Jetzt auf der Anhangseite sehen Sie etwas wie:

Anhänge Datum

Jetzt legen wir das Post-Datum bei der Anlage speichern fest:

 add_filter("attachment_fields_to_save", "save_date_to_attachments"); function save_date_to_attachments( $post ) { foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $f ) { $$f = (int) filter_input(INPUT_POST, $f, FILTER_SANITIZE_NUMBER_INT); } if ( ! checkdate ( $mm, $jj, $aa ) ) return; // bad data, man if ( ($hh < 0 || $hh > 24) ) $hh = 0; if ( ($mn < 0 || $mn > 60) ) $mn = 0; $ts = mktime($hh, $mn, 0, $mm, $jj, $aa); $date = date( 'Ymd H:i:s', $ts ); $date_gmt = date( 'Ymd H:i:s', ( $ts + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) ); $modified = current_time( 'mysql'); $modified_gmt = current_time( 'mysql', true); global $wpdb; $data = array( 'post_date' => $date, 'post_date_gmt' => $date_gmt, 'post_modified' => $modified, 'post_modified_gmt' => $modified_gmt, ); $wpdb->update( $wpdb->posts, $data, array( 'ID' => $post['ID'] ), '%s', '%d' ); } 

Wenn der Anhang gespeichert wird, wird das Veröffentlichungsdatum auf das festgelegt, was Sie für Datumsfelder festlegen.

Anhänge sind jedoch alle sichtbar, unabhängig vom Datum, da WordPress das Datum der Anhänge nicht überprüft. Fügen wir der where-Klausel dafür einen Filter hinzu:

 add_filter( 'posts_where', 'not_future_attachment', 9999, 2 ); function not_future_attachment( $where, $query ) { if ( is_admin() ) return $where; if ( $query->get('post_type') === 'attachment' ) { global $wpdb; $where .= $wpdb->prepare( " AND ($wpdb->posts.post_date < = %s)", current_time( 'mysql') ); } return $where; } 

Stellen Sie in einem Shortcode für die Galerie (oder wo immer Sie möchten) sicher, dass Sie WP_Query , um das Post-Type-Argument für 'attachment' WP_Query .

Auf dem standardmäßigen [gallery] get_children funktioniert das nicht, da es get_children wo Abfragefilter unterdrückt werden. Sie müssen also einen benutzerdefinierten Shortcode erstellen oder den Standard überschreiben.

Erstellen Sie die komplette Galerie auf einmal, verwenden Sie dafür einen benutzerdefinierten Shortcode-Handler.

In Ihrem Shortcode-Handler zählen Sie einfach die Anhänge für einen Adventskalender oder suchen Sie nach einem Post-Meta für den Anhang. Ersetzen Sie das Bild durch einen Platzhalter oder verstecken Sie es vollständig, falls es noch nicht gesehen werden sollte.

Ein Anhang ist öffentlich, der Moment wird hochgeladen, weil WordPress nicht an der direkten Dateianfrage beteiligt ist.