如何将动态内容添加到帖子页面、存档、分类、搜索、作者等?

时间:2016-01-08 作者:human

我正在构建一个Wordpress插件,它是一种页面生成器,我希望允许用户通过向“模板层次结构”(archive.php、home.php、front-page.php、404.php和search.php)中的任何页面添加内容/短码来手动自定义页面布局。

我已经为page完成了此操作。php使用“自定义页面模板”,该模板使用内容编辑器和短代码来填充页面的布局和内容。

现在,我该如何允许其他模板(archive.php、home.php、front-page.php、404.php和search.php)接受所见即所得编辑器中的动态内容,以一种简单的Wordpress风格构建自己的布局?

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

在您的页面模板中,您的代码可以是这样简单的:

do_action(\'archive_page_html\');
问题是,如果你正在构建一个插件,让你的用户修改他们的主题模板以在5月份发布,或者可能不是那么理想,但由于不同的主题有不同的模板,而你正在编写插件,这也可能是不可避免的。。。

在插件/主题编码中,您可以添加如下内容:

add_action(\'archive_page_html\',\'custom_archive_page_html\');
function custom_archive_page_html() {
    // get your theme option value, however you are doing that
    $archivehtml = get_option(\'archive_page_html\'); 
    // allow it to be further customized on a condition basis, 
    // eg. to use different HTML for different archives
    $archivehtml = apply_filters(\'archive_page_html_filter\',$archivehtml); 
    // process the HTML using the_content filter
    // (this will also process any shortcodes)
    $archivehtml = apply_filters(\'the_content\',$archivehtml);
    echo $archivehtml;
}
然后,这取决于您希望为向每种页面类型添加内容提供何种用户界面。

您可以通过自定义程序在主题选项中添加不同的HTML部分,我看到类似的块也可以这样做。但要获得所见即所得编辑器,您可能必须在插件/主题中添加一个TinyMCE自定义程序控件,例如此项目中的文本编辑器控件:

https://github.com/paulund/Wordpress-Theme-Customizer-Custom-Controls

(为了最好地为自定义程序本身编码以找到教程,这可能有点棘手。)

另一个选项是创建一个仅限管理员的自定义帖子类型来处理模板(请参见register_post_type()) 并让你的插件/主题自动创建所有带有匹配slug的帖子(请参阅wp_insert_post()) 激活时(检查它们是否已经存在)。。。然后,该模板内容将可供用户通过该自定义帖子类型的帖子编写屏幕进行编辑对操作功能代码的更改将代替使用get_option 等等。您可以使用get_posts 使用自定义post类型和slug,例如。

$posts = get_posts(array(
    \'post_type\' => \'templates\', // The Custom Post Type registered
    \'name\' => \'archive\' // The slug for the CPT template created
    )
);
$archivehtml = $posts[0]->post_content;
第三种选择是自己将这些接口添加到自己的自定义主题/插件设置页面中,但当然你必须自己决定如何最好地完成这项工作。:-)

相关推荐

Can I make plugins required?

我正在开发自己的Wordpress主题,将用于多个客户端。它有一个主题选项页面,这样我每次都可以轻松自定义网站,但我也会在我制作的每个网站上使用一些插件(如SEO插件、安全性等)。有没有办法让它们成为“必需的”,这样我就可以得到这些插件的列表,这样当我在新网站上安装主题时就不必在插件目录中找到它们了?