Setting 'post_format'

时间:2016-02-26 作者:John Doe

目前,我的自动过帐流程文件有以下代码。

// Create post object
$my_post = array(
          \'post_title\'    => wp_strip_all_tags( trim( $row[\'title\'] ) ),
          \'post_content\'  => $content,
          \'post_format\' => \'audio\',
          \'post_status\'   => \'publish\',
          \'post_author\'   => 1,
          \'post_category\' => array( 2 ),
          \'post_date\' => date(\'Y-m-d H:i:s\')
);
你可以看到上面我已经包括了\'post_format\' => \'audio\', 在我的数组中,但这似乎并没有将现有的post格式从“标准”设置为“音频”,这正是我试图实现的。

Screen Shot.

现在我开始在这里取得一些进展,但我仍然处于死胡同。

set_post_format($post->ID, \'audio\' );
如果我将此添加到我的循环中,在编辑我的帖子时,它实际上会将格式更改为音频,但我必须手动编辑帖子才能更改,这是一个问题。

<?php       
    while ( have_posts() ) : the_post();
    set_post_format($post->ID, \'audio\' );

        get_template_part( \'template-parts/content\', get_post_format() );

        // If comments are open or we have at least one comment, load up the comment template.
        if ( comments_open() || get_comments_number() ) :
            comments_template();
        endif;
    endwhile; // End of the loop.
?>
以上是我的循环,在这一点上,真诚地感谢任何帮助。。我正在努力解决这个问题,希望知道如何自动设置它,以便post_format 每次上传时默认为“音频”。

1 个回复
SO网友:fischi

您可以将操作添加到wp_insert_post(). 最酷的是第三个参数-$update, 因为它只允许您设置post_format 一次,以后可以更改。这是必要的,因为功能wp_insert_post() 不仅在创建时调用,而且在更新等时调用。

add_action( \'wp_insert_post\', \'f711_set_default_format\', 10, 3 );

function f711_set_default_format( $post_ID, $post, $update ) {

    // execute only on creation, not on update, and only if the post type is post
    if ( $update !== true && $post->post_type == \'post\' ) {

        set_post_format( $post_ID, \'audio\' );

    }

}
如果您需要对所有现有帖子执行此操作,只需创建一个循环并调用set_post_format() 对于每一个人。