将自定义页面模板中的预定义文本注入到编辑器

时间:2015-02-09 作者:ccot

我正在创建自定义页面模板:

< ?php
/*
 * Template Name: sliding content
 * Description: Sliding category contents
*/
get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
                        <?php while ( have_posts() ) : the_post(); ?>
                                <div class="post">
                                    <h2 id="post-<?php the_ID(); ?>"><?php the_title();?></h2>
                                    <div id="accordion">
                                        <?php the_content();?>
                                    </div>
                                </div>
                        <?php endwhile; // end of the loop. ?>

    </main><!-- #main -->
</div><!-- #primary -->
< ? php get_footer(); ?>
我想有预定义的文本,这将显示在wp管理页面的编辑器一旦这个模板被选中。管理员将能够修改;编辑器中将显示类似的内容:

<h1>modify this header for title</h1>
<div id="accordion">
 write your content here
</div>
wordpress实现此任务的方式是什么?

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

下面的代码可以工作,请阅读内联注释。将其粘贴到主题函数中。php或插件。

唯一的问题是,只有在选择模板、保存/更新帖子并且编辑器为空时,它才会起作用。

<?php

function wpse_177576_update_editor_content( $post_id ) {

    if ( wp_is_post_revision( $post_id ) )
        return;

    $post = get_post( $post_id );
    $content = apply_filters( \'the_content\', $post->post_content );

    if ( \'\' != $content )
        return; // content already exists, we don\'t want to overwrite it.

    $template = get_post_meta( $post_id, \'_wp_page_template\', true ); // Returns the template file name i.e. page-accordion.php

    if ( $template == \'page-accordion.php\' ) { // change "page-accordion.php" to the filename of your template
        $content = \'<h1>modify this header for title</h1>
                    <div id="accordion">
                        write you content here
                    </div>\';
    }

    /**
     * Update the post with template content
     */
    wp_update_post( array(
        \'ID\' => $post_id,
        \'post_content\' => $content
    ) );
}
add_action( \'save_post\', \'wpse_177576_update_editor_content\' );

结束

相关推荐

使用Get_Pages()或Get_Posts()获取所有页面和帖子

尝试获取所有帖子(我指的是来自自定义帖子类型的所有页面、帖子和帖子)。这可能吗?文档中说我只能将字符串作为post_type 那么,我如何获得所有页面和自定义帖子类型呢?调用自定义post类型的示例project$args = array( \'exclude\' => $inclPages, \'post_type\' => \'pages,project\', \'title_li\' => __(\'\'),&