寻找有关定制帖子的方向

时间:2012-08-20 作者:SgtSlaughter

我目前正在一个相当大的博客社区网站上工作(大约500000个单号/月)。我决定要为社区站点的所有不同部分建立一个网络,以将DB负载保持在最低限度。

IE:-用于用户生成配方的网站-用于用户论坛的网站(使用wordpress)-用于来宾博客帖子的网站

对于recipe站点,我正在考虑使用一个名为recipe的自定义帖子类型。我的问题是,默认情况下,我会得到如下URL:菜谱。领域com/recipe/%post name%或域。com/recipes/recipe/%post name%(取决于我在网络中使用的是子域还是子目录)。

因此,对于选项1,我可以删除我发现的以下标记http://www.ultimatewebtips.com/remove-slug-from-custom-post-type/Wordpress 3.3 custom post type with /%postname%/ permastruct?

虽然这看起来不错,但我不想增加任何开销,也不必担心在更新wordpress或使用缓存插件时出现问题。我并不是说会,但我只是觉得搞乱permalink结构可能不是一个好主意。

对于第二个选项,我可以使用默认的post类型作为我的“配方”(因为我不会将其用于其他任何事情)。这样,我可以添加如下过滤器:

add_filter( \'gettext\', \'change_post_to_recipe\' );
add_filter( \'ngettext\', \'change_post_to_recipe\' );

function change_post_to_recipe( $translated ) 
{  
    $translated = str_replace( \'Post\', \'Recipe\', $translated );
    $translated = str_replace( \'post\', \'Recipe\', $translated );
    return $translated;
}
然后使用remove\\u post\\u type\\u support()删除我不需要的东西,如“editor”和“extract”。

我唯一担心的是gettext或ngettext函数会被加载很多,我会进行大量的str\\u替换。使用默认的post类型的好处是,我可以使用所有默认的内置函数来完成我需要的工作,大多数插件都可以很好地使用它。

如有任何建议,将不胜感激。

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

重写的主要问题是冲突,而不是可维护性,因为该代码本来可以在3.1和3.4中使用,而且不太可能中断,如果中断了,则会有一些版本的弃用通知。

我建议使用重命名的帖子,但要使用如下代码:

function change_post_menu_label() {
    global $menu;
    global $submenu;
    $menu[5][0] = \'Recipes\';
    $submenu[\'edit.php\'][5][0] = \'Recipes\';
    $submenu[\'edit.php\'][10][0] = \'Add Recipes\';
    $submenu[\'edit.php\'][16][0] = \'Recipe Tags\';
    echo \'\';
}
function change_post_object_label() {
    global $wp_post_types;
    $labels = &$wp_post_types[\'post\']->labels;
    $labels->name = \'Recipes\';
    $labels->singular_name = \'Recipe\';
    $labels->add_new = \'Add Recipe\';
    $labels->add_new_item = \'Add Recipe\';
    $labels->edit_item = \'Edit Recipe\';
    $labels->new_item = \'Recipes\';
    $labels->view_item = \'View Recipes\';
    $labels->search_items = \'Search Recipes\';
    $labels->not_found = \'No Recipes found\';
    $labels->not_found_in_trash = \'No Recipes found in Trash\';
}
add_action( \'init\', \'change_post_object_label\' );
add_action( \'admin_menu\', \'change_post_menu_label\' );

结束

相关推荐