如何将来自自定义帖子类型的帖子添加为静态页面?

时间:2010-11-11 作者:NetConstructor.com

我创建了一个自定义的帖子类型,并在页面编辑屏幕上添加了一些自定义的元框。我的目标是提供用户可以编辑的特定元数据库,从而允许用户修改网站主页的特定内容区域。

上面描述的一切都很好地工作,除了我似乎无法在wordpress管理“设置”区域内将从该自定义帖子类型创建的页面设置为“静态页面”。

让您选择静态页面的下拉列表似乎只显示位于默认wordpress“page”post\\u类型内的页面。

我如何才能更改这些设置以实现我的目标?

2 个回复
最合适的回答,由SO网友:NetConstructor.com 整理而成

除非能提供关于这个主题的解决方案,否则我将假设目前实现这一点的最佳方法是在ones模板中创建一个“home.php”文件,并直接查询帖子ID。

我暂时接受了这个答案,但如果有人在这个答案被接受后找到了解决方案,请发布它,我将接受这个答案作为正确答案。

SO网友:fuxia

为添加筛选器\'wp_dropdown_pages\'. 如果\'name\' => \'page_on_front\', 用自定义帖子类型填写列表。

这里有一个非常简单的插件示例。我接受了custom post type from the codex.

<?php
/*
Plugin Name: Custom Post Type as Front Page
Description: Adds your custom post type to the list of available front pages.
Version:     0.1
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL v2
*/

add_action(\'init\', \'my_custom_init\');
function my_custom_init()
{
    $labels = array(
    \'name\' => _x(\'Books\', \'post type general name\'),
    \'singular_name\' => _x(\'Book\', \'post type singular name\'),
    \'add_new\' => _x(\'Add New\', \'book\'),
    \'add_new_item\' => __(\'Add New Book\'),
    \'edit_item\' => __(\'Edit Book\'),
    \'new_item\' => __(\'New Book\'),
    \'view_item\' => __(\'View Book\'),
    \'search_items\' => __(\'Search Books\'),
    \'not_found\' =>  __(\'No books found\'),
    \'not_found_in_trash\' => __(\'No books found in Trash\'),
    \'parent_item_colon\' => \'\'
    );
    $args = array(
    \'labels\' => $labels,
    \'public\' => true,
    \'publicly_queryable\' => true,
    \'show_ui\' => true,
    \'query_var\' => true,
    \'rewrite\' => true,
    \'capability_type\' => \'post\',
    \'hierarchical\' => false,
    \'menu_position\' => null,
    \'supports\' => array(\'title\',\'editor\',\'author\',\'thumbnail\',\'excerpt\',\'comments\')
    );
    register_post_type(\'book\',$args);
}

//add filter to insure the text Book, or book, is displayed when user updates a book
add_filter(\'post_updated_messages\', \'book_updated_messages\');
function book_updated_messages( $messages ) {
    global $post, $post_ID;

    $messages[\'book\'] = array(
    0 => \'\', // Unused. Messages start at index 1.
    1 => sprintf( __(\'Book updated. <a href="%s">View book</a>\'), esc_url( get_permalink($post_ID) ) ),
    2 => __(\'Custom field updated.\'),
    3 => __(\'Custom field deleted.\'),
    4 => __(\'Book updated.\'),
    /* translators: %s: date and time of the revision */
    5 => isset($_GET[\'revision\']) ? sprintf( __(\'Book restored to revision from %s\'), wp_post_revision_title( (int) $_GET[\'revision\'], false ) ) : false,
    6 => sprintf( __(\'Book published. <a href="%s">View book</a>\'), esc_url( get_permalink($post_ID) ) ),
    7 => __(\'Book saved.\'),
    8 => sprintf( __(\'Book submitted. <a target="_blank" href="%s">Preview book</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
    9 => sprintf( __(\'Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>\'),
    // translators: Publish box date format, see http://php.net/date
    date_i18n( __( \'M j, Y @ G:i\' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __(\'Book draft updated. <a target="_blank" href="%s">Preview book</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
    );

    return $messages;
}

// Here we go!
add_filter(\'wp_dropdown_pages\', \'add_book_page_to_dropdown\', 10, 1);

function add_book_page_to_dropdown( $select )
{
    // Not our list.
    if ( FALSE === strpos( $select, \'<select name="page_on_front"\' ) )
    {
        return $select;
    }

    $books = get_posts( array( \'post_type\' => \'book\' ) );

    if ( ! $books ) // no books found.
    {
        return $select;
    }

    $book_options = walk_page_dropdown_tree($books, 0,
         array(
            \'depth\' => 0
         ,  \'child_of\' => 0
         ,  \'selected\' => 0
         ,  \'echo\' => 0
         ,  \'name\' => \'page_on_front\'
         ,  \'id\' => \'\'
         ,  \'show_option_none\' => \'\'
         ,  \'show_option_no_change\' => \'\'
         ,  \'option_none_value\' => \'\'
        )
    );

    return str_replace( \'</select>\', $book_options . \'</select>\', $select );
}
激活,写入book 第页,转到Reading Settings, 并选择该页面作为frontpage。

Screenshot

Save Changes. 微笑

结束

相关推荐

Custom theme - pages in menu

我很高兴有机会成为这个社区的一员。最近我决定开始学习wordpress和主题构建,所以这是我在这里的第一篇帖子。我在网上阅读了一些关于如何构建自定义主题的教程。我的问题是,如何构建自定义菜单?例如,我在psd上有模板,我将其切片,然后我想将其集成到wordpress上。我支持先构建页面。那么,如何使用自定义css/xhtml构建菜单,使每个链接都指向我创建的页面?也许描述不清楚,但我想你明白我的意思。提前感谢。