根据新帖子的查询字符串自动选择模板

时间:2019-03-07 作者:Chris

我希望扩展Automatically select categories on new post based on GET value

但是,除了在new\\u to\\u auto-draft阶段设置类别之外,还将选择特定的模板。

我想使用update\\u post\\u meta函数来设置模板,但在帖子存在之前它不起作用。

update_post_meta( $post->ID, \'_wp_page_template\', \'new_template.php\' );
最终目标是,当用户单击管理中的“添加新页面-模板类型”链接时,他们不必手动选择模板。

1 个回复
最合适的回答,由SO网友:MikeNGarrett 整理而成

您完全可以通过new_to_auto-draft 行动这是因为wp_insert_post 刚刚从post数组中获取模板并更新meta以反映这一点。基本上,您将在设置后立即覆盖数据库中的该值。下面是一个示例:

function my_project_change_default_template( $post ) {
    if ( ! strpos( $_SERVER[\'REQUEST_URI\'], \'wp-admin/post-new.php\' ) ) {
        return;
    }

    if ( \'page\' === get_post_type( $post ) ) {
        update_post_meta( $post->ID, \'_wp_page_template\', \'new-template.php\' );
    }
}
add_action( \'new_to_auto-draft\', \'my_project_change_default_template\' );
您还可以通过wp_insert_post 行动,因为(如回答所述)这是在同一时间调用的,但在wp_insert_post. 见下文:

function my_project_change_default_template( $post_id, $post, $update ) {
    if ( $update ) {
        return;
    }

    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }

    if ( \'page\' === get_post_type( $post ) ) {
        update_post_meta( $post_id, \'_wp_page_template\', \'new-template.php\' );
    }
}
add_action( \'wp_insert_post\', \'my_project_change_default_template\', 10, 3 );
请注意:这是在WordPress 5.1中测试的。

相关推荐

Query posts by Post title

我使用下面的ACF查询生成一个列表,效果很好。然而,现在我想按标准WP“post title”而不是ACF自定义字段“datum”对列表进行排序我该怎么做?// args $args = array( \'posts_per_page\' => 999, \'post_type\' => \'lezing\', \'orderby\' => \'meta_value\', \'order\' => \'ASC\',