在网络上创建新站点时刷新重写规则

时间:2013-10-02 作者:730wavy

我正在使用一个多站点设置,我创建了一些自定义的帖子类型,这些类型似乎工作得很好,除非在尝试查看前端的任何帖子类型页面时,我会看到一个白色屏幕。在研究了这个问题之后,flush重写规则似乎解决了这个问题。问题是管理员无法访问永久链接设置,因此他们自己无法刷新它。

我目前正在使用以下代码在激活主题时刷新,但这并不理想,因为用户必须切换到另一个主题,然后再切换回主主题。因此,我试图找到一种方法,在创建新站点时修改以下代码,从而使自定义帖子类型从一开始就可以工作---

/* Flush rewrite rules for custom post types. */
add_action( \'after_switch_theme\', \'bt_flush_rewrite_rules\' );

/* Flush your rewrite rules */
function bt_flush_rewrite_rules() {
     flush_rewrite_rules();
}
非常感谢您的帮助,谢谢。

UPDATED

我有一个主站点,用户可以在前端注册像mysite这样的站点。com/他们的网站。设置了它们的默认主题。这就是我试图放置代码的地方,这样当他们创建一个站点时,刷新重写就可以工作,而不是切换主题。管理仪表板已简化,因此他们无法访问永久链接或主题->编辑器。

我认为,在创建自定义post类型时,应该刷新重写,因此甚至不需要使用额外的代码?

如果有帮助的话,这是我的注册帖子类型代码--

http://pastebin.com/XsRjLj3q

4 个回复
最合适的回答,由SO网友:730wavy 整理而成

好吧,我能想出来。虽然尤金·曼努伊洛夫的回答很好,可能对其他人有用,但不幸的是,它对我不起作用。对我来说,结束工作的是在我最后一次自定义帖子类型结束之前添加刷新重写。

function register_cpt_attorney() {

    $labels = array( 
        \'name\' => _x( \'Attorneys\', \'attorney\' ),
        \'singular_name\' => _x( \'Attorney\', \'attorney\' ),
        \'add_new\' => _x( \'Add New Attorneys\', \'attorney\' ),
        \'add_new_item\' => _x( \'Add New Attorney\', \'attorney\' ),
        \'edit_item\' => _x( \'Edit Attorney\', \'attorney\' ),
        \'new_item\' => _x( \'New Attorney\', \'attorney\' ),
        \'view_item\' => _x( \'View Attorney\', \'attorney\' ),
        \'search_items\' => _x( \'Search Attorneys\', \'attorney\' ),
        \'not_found\' => _x( \'No attorneys found\', \'attorney\' ),
        \'not_found_in_trash\' => _x( \'No attorneys found in Trash\', \'attorney\' ),
        \'parent_item_colon\' => _x( \'Parent Attorney:\', \'attorney\' ),
        \'menu_name\' => _x( \'Attorneys\', \'attorney\' ),
    );

    $args = array( 
        \'labels\' => $labels,
        \'hierarchical\' => false,
        \'description\' => \'Your Attorney page(s).\',
        \'supports\' => array( \'thumbnail\' ),

        \'public\' => true,
        \'show_ui\' => true,
        \'show_in_menu\' => false,
        \'menu_position\' => 5,
        \'show_in_nav_menus\' => true,
        \'publicly_queryable\' => true,
        \'exclude_from_search\' => false,
        \'has_archive\' => true,
        \'query_var\' => true,
        \'can_export\' => true,
        \'rewrite\' => true,
        \'capability_type\' => \'post\'

    );
    register_post_type( \'attorney\', $args );
 // add the following function if you are getting 
        // a \'Page not found\' error from your permalink
        flush_rewrite_rules( false );
}

add_action( \'init\', \'register_cpt_attorney\' );

SO网友:Eugene Manuilov

您需要为wpmu_new_blog 措施:

add_action( \'wpmu_new_blog\', \'wpse8170_wpmu_new_blog\' );
function wpse8170_wpmu_new_blog( $blog_id ) {
    switch_to_blog( $blog_id );
    flush_rewrite_rules();
    restore_current_blog();
}

SO网友:gwillie

您是自己部署站点,还是提供一个文件并让其他人这么做。正在定义WP_DEFAULT_THEME 在配置中使用默认主题,从而否定after_switch_theme?

在我看来,在正常的wp安装中,我们将文件上载到服务器,定义db设置,点击域,wp显示设置页面,单击安装,完成。现在你通常会在这个阶段改变主题,但你是说他们永远不会选择一个主题,因为你已经用WP_DEFAULT_THEME?

你可能很淘气,在前面的索引中添加一些代码。php,包括一个执行特定主题设置的文件,完成后会删除它自己。

SO网友:Matt Woodward

在多站点上创建新博客时,我自己也遇到了一个类似的问题,这是主题设置自动化的一部分。尝试了多种方法后,我在以下网站上找到了一篇很棒的文章:https://jeremyfelt.com/2015/07/17/flushing-rewrite-rules-in-wordpress-multisite-for-fun-and-profit/#comment-141799

这篇文章给了你很多不同的选择,但简而言之,我发现在我的新网站上刷新重写规则的方法是:

/* Add action call to New Blog Hook */
add_action(\'wpmu_new_blog\', \'setup_my_site\', 10, 2);

// Setup function
function setup_my_site($blog_id, $user_id){

    // Switch blog context  
    switch_to_blog($blog_id);

    // Delete initial rule options
    delete_option( \'rewrite_rules\' );

    // Restore original blog context
    restore_current_blog();

}
希望能帮助处于类似情况的人:)

结束

相关推荐

WordPress和MultiSite,正确的选择?

我即将为一个非营利组织创建一个网站,我需要它成为一个多站点平台。我不知道Worpress,但我知道有一个多站点选项。因此我想知道Wordpress是否是正确的解决方案。。。因此,我需要支持以下内容:[1 platform, 1 community]<单一用户群和SSO(每个站点1次登录)[several sites, several looks]<每个网站都需要有自己的风格(颜色、字体、图像……基本上只有css imo)[an accurate permission system]<每个