如何只有一个自定义帖子类型的帖子?

时间:2011-08-19 作者:Steve Fischer

是否可以将CPT限制为仅一个?我想完成的是创建一个名为“家”的CPT。它将管理主页上的任何和所有元素。我想对其进行编程,这样当用户单击“管理主页”链接时,他们将直接进入编辑帖子屏幕。他们将跳过“All Post”屏幕。有人认为这是可能的吗?

或者有人有一个完全不同的想法来实现这个目标?

5 个回复
最合适的回答,由SO网友:Michal Mau 整理而成

我建议为此创建一个主题选项页面。

https://wordpress.stackexchange.com/questions/tagged/theme-options

add_options_page() 在法典中。

或者,在编辑后的屏幕中是否有您想要使用的、很难进入主题选项页面的特殊内容?

SO网友:Tom J Nowell

您之所以希望这样做,是因为您的客户感到困惑,而将页面设置为主页将不起作用。

但你的解决方案是一罐等待在你脸上爆炸的蠕虫,所以我有一个更好的解决方案!

Use the home.php template

默认在WordPress主页中。php用作主页。如果找不到,请访问首页。使用php,如果找不到,则使用索引。php

因此,创建主页。php,将您的主页代码放入其中,然后添加一个设置页面,其中包含所见即所得编辑器和各种内容的图像上传器。如果登录到该站点,您甚至可以从前端直接链接到设置页面。

如果您的客户仍然感到困惑,请使用屏幕步骤向他们展示如何操作。很可能你的客户只是感到困惑,因为他们没有投入任何时间阅读说明或弄明白它。

这样做的另一个好处是,它不会留下任何令人困惑的步骤,如单击列表并查找单个可用的帖子,以及“添加新主页”按钮,该按钮只会生成警告和权限被拒绝的消息。

SO网友:paulo

可能此插件可以帮助您:

Author\'s site

WordPress plugin

SO网友:Hameedullah Khan

Steve,我的理解是你想要:

没有“所有帖子”子菜单的自定义帖子类型您只想在“帖子”子菜单下显示“编辑主页”链接吗

注意:用户仍然可以使用将帖子添加到自定义帖子类型wp_insert_post

<?php
/**
 * Plugin Name: Home Page CPT
 **/

class WPSE_26330_Homepage_CPT {

    function __construct() {

        // add the default homepage on plugin activation
        register_activation_hook( __FILE__, array( &$this, \'add_home_page_post\' ) );

        // register the homepage post type
        add_action( \'init\', array( &$this, \'register_homepage_cpt\' ) );

        // add the menu link
        add_action( \'admin_menu\', array( &$this, \'edit_homepage_link\' ) );
    }

    function edit_homepage_link() {
        global $submenu, $pagenow;

        // query the homepage posts
        $homepage = new WP_Query( \'post_type=homepage\' );

        // if its new post page and we have homepage
        if ( $pagenow == \'post-new.php\' && $homepage->have_posts() ) {
            wp_die(\'You cant add more then one homepage\');
        }

        // if we have homepage post, show the edit link else the add homepage link
        if ( $homepage->have_posts() ) {
            $homepage->the_post();
            $link = get_edit_post_link( get_the_ID(), \'return\' );
            $title = \'Edit Home Page\';
        } else {
            // in case if the user has deleted the default post
            $link = get_bloginfo( \'url\' ). \'/wp-admin/post-new.php?post_type=homepage\';
            $title = \'Add Home Page\';
        }
        $submenu[\'edit.php\'] = array( array( $title, \'manage_options\', $link ) ) + $submenu[\'edit.php\'];
    }

    function register_homepage_cpt() {
        $args = array( 
            \'label\' => \'homepage\',
            \'description\' => \'Home Page post type\',
            \'public\' => true,
            \'show_in_menu\' => false
        );
        register_post_type( \'homepage\', $args );
    }

    function add_home_page_post() {
        // on activation first regsiter the post type
        $this->register_homepage_cpt();

        // add the first and only post
        $post_data = array(
            \'post_title\' => \'Home Page\',
            \'post_type\' => \'homepage\',
            \'post_statue\' => \'publish\',
            \'post_author\' => 1
        );
        wp_insert_post( $post_data );
    }

}

$GLOBALS[\'wpse_homepage_cpt\'] = new WPSE_26330_Homepage_CPT;
?>

SO网友:SickHippie

我实际上做过类似的事情。我结合使用了一些不同的东西,这对我的(容易混淆的)客户都非常有效。

基本上,我从一个名为“主页”的页面开始。然后,使用Advanced Custom Fields, 我创建了我希望客户端能够控制的各种字段-两个WYSIWYG字段、几个图像字段、几个链接字段,你明白了。然后,在为该ACF类型设置规则时,我在编辑页面上隐藏了主“内容”区域。我确保为每个内容区域添加清晰简洁的规则,以避免混淆,这样他们就可以确切地知道在每个领域可以做什么和不能做什么。

因此,当客户点击WordPress菜单中的“编辑页面”时,他们会看到“主页”的编辑贴子页面,所有他们控制的区域都排列整齐。

然后,我搭建了家。php模板调用适当位置的字段输出。ACF主站点上有一些不错的教程和代码剪贴画。

这让我的客户非常高兴,也让我以后的许多令人沮丧的维护工作都没有了。

结束

相关推荐