众所周知,可以在Wordpress中安排发布帖子。
此外,附件实际上是帖子(在更内部的技术意义上)。
所以现在困扰我的问题是:是否也可以安排附件?例如,照片库会随着时间的推移而增长?
众所周知,可以在Wordpress中安排发布帖子。
此外,附件实际上是帖子(在更内部的技术意义上)。
所以现在困扰我的问题是:是否也可以安排附件?例如,照片库会随着时间的推移而增长?
我的想法是,您可以为附件设置发布日期。这可以使用attachment_fields_to_edit
要显示UI(可以使用touch_time
内部功能)。
之后,您可以过滤所有附件查询,以仅显示具有过去或当前日期的附件。
所以
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(\'<label for="content"><strong>%s</strong></label>\', __(\'Date\'));
touch_time( 1, 1, 0, 1 );
return $form_fields;
}
现在,在附件页面上,您将看到如下内容:现在,让我们在附件保存时设置发布日期:
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( \'Y-m-d H:i:s\', $ts );
$date_gmt = date( \'Y-m-d 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\' );
}
保存附件后,发布日期将设置为您在日期字段中设置的任何日期。但是,无论日期如何,附件都是可见的,因为WordPress不会在附件查询中检查日期。让我们在where子句中添加一个过滤器:
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;
}
现在,在gallery(或任何您想要的地方)的快捷代码中,请确保使用WP_Query
将post类型参数设置为\'attachment\'
.按标准[gallery]
快捷码由于使用get_children
如果查询过滤器被抑制,则必须创建自定义快捷码或覆盖默认值。
立即创建完整的库,使用自定义的短代码处理程序。
在您的快捷码处理程序中,只需计算降临日历的附件数,或查找附件的post meta。用占位符替换图像,或者完全隐藏图像(如果不应该看到)。
由于WordPress不参与直接文件请求,因此在上传时附件是公开的。
我想检查一个变量是否包含帖子ID列表,然后我只想查询那些ID的帖子,但如果该变量为空,那么我想显示所有帖子。问题:如果我将ID提供给post__in, 然后它会获取带有这些ID的帖子,但是如果它是空的,那么它应该返回all posts 但它没有返回任何帖子。例如,以下代码将获取ID为1、2、3的帖子。但是,如果$ids 为空。在这种情况下,它不应该返回所有帖子吗?如果$ids 是空的,即。$ids = \"\"; ?$ids = \'1,2,3\'; $arr = explode(\",\" ,$