Create a Page via plugin

时间:2014-01-22 作者:picus

我的问题是显示从db表读取的产品列表。我知道如何读取它们,并且能够生成表,但只使用嵌入在我通过WP创建的页面中的短代码。

我希望插件本身创建一个包含我的表的页面,该页面通过菜单项(而不是管理菜单)提供给WP用户。

什么是正确的方法?

1 个回复
SO网友:fischi

您可以通过以下方式创建页面wp_insert_post( $post, $wp_error );.这个array $post 包含页面的数据和完整文档here.

确保从插入的页面/帖子中收到ID。您可以在激活插件时添加页面,但请先检查页面选项是否已设置(可能来自以前的安装),因为在这种情况下,您可以跳过页面的创建:

function your_plugin_activate() {

    if ( !get_option( \'your_plugin_page_id\' ) ) { // check if the option is already set

        $post = array(); //insert your postdata into this array
        $mypageid = wp_insert_post( $post ); // create the page/post
        update_option( \'your_plugin_page_id\', $mypageid ); // set the option in the database for future reference
    }

}
register_activation_hook( __FILE__, \'your_plugin_activate\' );
这将进入插件文件。

您可以将此ID保存在插件选项中,并使用它自动过滤内容并插入表格。当然,您也可以直接在post_content, 但使用

add_filter( \'the_content\', \'your_table_function_name\' );

function your_table_function_name( $content ) {

    if ( $GLOBALS[\'post\']->ID == get_option( \'your_plugin_page_id\' ) ) { // check if you are on the right page
        $content = $your_table_code . $content; // Set the Table in front of the User Content
    }
    return $content; // return the content, any other page returns the original content.

}
提供了独立于用户输入的优势,因为错误的短代码可能会阻止显示表格。

请记住,如果您让用户选择要筛选的现有页面,或自动创建新页面,并提供更改此页面的选项,这将对用户非常有益。如果您保存了新页面的ID,这应该不会太费劲:)

结束

相关推荐

为什么Get_Pages()返回一个布尔值?

我已经创建了一个自定义的帖子类型,我想使用它允许人们在我的主题主页中添加任意数量的部分。我想循环浏览所有此类帖子,并将其内容包含在页面中。我的问题是get_pages() 具有\'post_type\' => \'home_section\' 似乎返回的是布尔值,而不是数组。下面是我用来测试的代码:<?php $hp_sections = get_pages(array(\'post_type\' => \'home_section\')); echo \'&