如何创建%POST_TYPE%/%POSTNAME%/固定链接结构?

时间:2012-05-03 作者:Josh

如何创建%post\\u type%/%postname%/永久链接结构?

This is what is not working:

例如(domain.com/blog/)->“点击帖子”(domain.com/post-name)

How do I make "blog post" permalinks work like this...

例如(domain.com/blog/)->“点击帖子”(domain.com/blog/职位名称)

<小时>

Although other custom post types work?...

例如(domain.com/portfolio/)->“点击公文包条目”(domain.com/portfolio/project)

还有,我应该重新冲洗Permalinks吗?

这是自定义帖子类型代码(&A);我的函数中的分类法代码。php文件:

  // Add Custom Post Type "Portfolio"
register_post_type(\'portfolio\', array(  \'label\' => \'Portfolio\',
\'description\' => \'\',
\'public\' => true,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'capability_type\' => \'post\',
\'hierarchical\' => false,
\'rewrite\' => array(\'slug\' => \'portfolio\'),
\'query_var\' => true,
\'supports\' => array(\'title\',
\'revisions\',),
\'taxonomies\' => array(\'Portfolio Category\',),
\'labels\' => array (
  \'name\' => \'Portfolio\',
  \'singular_name\' => \'Project\',
  \'menu_name\' => \'Portfolio\',
  \'add_new\' => \'Add Project\',
  \'add_new_item\' => \'Add New Project\',
  \'edit\' => \'Edit\',
  \'edit_item\' => \'Edit Project\',
  \'new_item\' => \'New Project\',
  \'view\' => \'View\',
  \'view_item\' => \'View Portfolio Piece\',
  \'search_items\' => \'Search Portfolio\',
  \'not_found\' => \'No Portfolio Pieces Found\',
  \'not_found_in_trash\' => \'No Portfolio Pieces found in Trash\',
  \'parent\' => \'Parent Project\',
),) );

// Add Custom Post Type "Testimonials"
register_post_type(\'testimonials\', array(   
\'label\' => \'Testimonials\',
\'description\' => \'\',
\'public\' => true,\'show_ui\' => true,
\'show_in_menu\' => true,
\'capability_type\' => \'post\',
\'hierarchical\' => false,
\'rewrite\' => array(\'slug\' => \'\'),
\'query_var\' => true,
\'supports\' => array(\'title\',
\'revisions\',),
\'labels\' => array (
  \'name\' => \'Testimonials\',
  \'singular_name\' => \'Testimonial\',
  \'menu_name\' => \'Testimonials\',
  \'add_new\' => \'Add New\',
  \'add_new_item\' => \'Add New Testimonial\',
  \'edit\' => \'Edit\',
  \'edit_item\' => \'Edit Testimonial\',
  \'new_item\' => \'New Testimonial\',
  \'view\' => \'View\',
  \'view_item\' => \'View Testimonial\',
  \'search_items\' => \'Search Testimonials\',
  \'not_found\' => \'No Testimonials Found\',
  \'not_found_in_trash\' => \'No Testimonials Found in Trash\',
  \'parent\' => \'Parent Testimonial\',
),) );

//Add Taxonomy for Portfolio Category
add_action( \'init\', \'portfolio_create_taxonomies\', 0 );

function portfolio_create_taxonomies()
{
    //Porfolio Category
    $portfolio_labels = array(
        \'name\' => _x( \'Portfolio Category\', \'taxonomy general name\' ),
        \'singular_name\' => _x( \'Portfolio Category\', \'taxonomy singular name\' ),
        \'search_items\' =>  __( \'Search in portfolio category\' ),
        \'all_items\' => __( \'All portfolio categories\' ),
        \'most_used_items\' => null,
        \'parent_item\' => null,
        \'parent_item_colon\' => null,
        \'edit_item\' => __( \'Edit portfolio category\' ),
        \'update_item\' => __( \'Update portfolio category\' ),
        \'add_new_item\' => __( \'Add new portfolio category\' ),
        \'new_item_name\' => __( \'New portfolio category\' ),
        \'menu_name\' => __( \'Portfolio Categories\' ),
    );
    register_taxonomy(\'portfolio-category\',array(\'portfolio\'),array(  
        \'hierarchical\' => true,
        \'labels\' => $portfolio_labels,
        \'show_ui\' => true,
        \'query_var\' => true,
        \'rewrite\' => array(\'slug\' => \'portfolio-category\')
    ));
}
编辑:我认为这个问题的出现是因为一个模板继承人的问题,博客页面正在使用“index.php”,而它应该使用“template blog.php”文件。

3 个回复
最合适的回答,由SO网友:mor10 整理而成

除了在设置>永久链接页面中禁用“pretty”永久链接会对所有帖子类型和分类禁用pretty永久链接之外,这些选项不会影响自定义帖子类型或分类。

如果将永久链接设置为blog/%postname% 然后,您的帖子将具有以下结构:www.yoursite.com/blog/hello-world.

另一方面,当一个post类型被注册时(默认情况下),它会将permalink设置为www.yoursite.com/post-type/newpost (假设您启用了相当多的永久链接,并且帖子类型为post-type).

自定义分类法也是如此:自定义分类法将显示为www.yoursite.com/custom-taxonomy/ 自定义分类术语将显示为www.yoursite.com/custom-taxonomy/custom-taxonomy-term/.

不过,要做到这一点,还需要做几件事。

在post类型的register\\u posttype()中,必须设置以下内容:

\'rewrite\' => true,
\'has_archive\' => \'post-type-name\', // "post-type-name" is replaced with your post type name
重写只允许WordPress重写URL。默认情况下,它设置为true。has\\u archive定义此帖子类型的存档(索引)页面的名称。如果未设置此值,则帖子类型没有索引页。

自定义分类法也是如此。在register\\u taxonomy()中:

\'rewrite\' => array(\'slug\' => \'hierarchical-taxonomy\' ),
Codex:

rewrite (布尔值或数组)(可选)设置为false以防止自动URL重写,也称为“pretty permalinks”。传递$args数组以覆盖永久链接的默认URL设置,如下所述。

$参数数组

“slug”-用作漂亮的permalink文本(即/tag/)-默认为$taxonomy(taxonomy的名称slug)

  • “with\\u front”-允许permalinks前面加上前置基-默认为true“Hierarchy”-true或false允许Hierarchy URL(在3.1版中实现)
  • flush\\u rules()。只应在创建分类法后刷新一次规则,而不是每次加载插件/主题时。

    SO网友:Monstr92

    最简单的方法是登录到wp admin,转到设置并单击永久链接选项。从那里,您可以将永久链接的结构更改为自定义样式。

    例如,我的设置方式是/blog/%postname%/。您还可以进行修补。htaccess代码,如果您愿意的话,但这会变得有点混乱。

    另一种方法是欺骗,但如果在中创建自定义页面模板。php在head中命名模板名称,然后将其链接起来。

    <?php
    /**
     * Template Name: About
     * Description: A full-width for About
     */
    get_header(); ?>
    
    然后创建一个新页面,选择页面模板,然后确保永久链接匹配。大多数情况下,这会起作用。你只需要两端同步。

    希望这有帮助。

    http://codex.wordpress.org/Post_Types^这可能对你的帖子类型也有帮助。

    SO网友:Tommixoft

    非常简单,不需要任何破解。只需保持代码不变,然后转到“设置”永久链接选择自定义结构并粘贴此:/%类别%/%postname%/

    并保存它,它将生成类似POSTYPE/POSTNAME的URL

    我用这个,它很管用。

    结束

    相关推荐

    强制ategory-slug.php显示页面,即使它不存在

    我在类别slug中有一个自定义查询。php,除非类别本身没有那么多的页面,否则它工作得很好。如果类别只有5页帖子,但我输入的查询有7页,那么第6页和第7页将显示404。很肯定,这是因为这类鼻涕虫。php在访问我在文件中的查询之前,检查是否有该类别的页面。我有没有办法强迫它运行页面而不是显示404?