在wordpress中重命名我的自定义帖子类型的slug不再起作用并且保留旧的slug

时间:2014-06-24 09:34:40

标签: php wordpress

我已经在WordPress主题上工作了几个星期,我面临以下问题:我有一个名为“指南”的自定义帖子类型,我使用重写slug将其更改为“stappenplan”。现在我想将其更改为“application”,但重写不起作用。它甚至没有到达Archive.php文件,这是奇怪的。我使用以下代码注册我的自定义帖子类型。

$guides = new \KC\ContentType('Guide',
['rewrite' => ['slug' => 'application'],'menu_icon' => get_template_directory_uri().'/img/icons/application.svg','has_archive' => true],
['plural_name' => 'Applications']);

和一个看起来如下的助手类:

<?php
namespace KC;

class ContentType {
  public $type;
  public $options = [];
  public $labels = [];

  /**
   * Creates a new ContentType object
   * @param string $type
   * @param array $options
   * @param array $labels
   */
  public function __construct($type, $options = [], $labels = []) {
    $this->type = $type;

    $default_options = [
      'public'             => true,
      'publicly_queryable' => true,
      'show_ui'            => true,
      'show_in_menu'       => true,
      'query_var'          => true,
      'rewrite'            => ['slug' => strtolower($type)],
      'capability_type'    => 'page',
      'has_archive'        => true,
      'hierarchical'       => true,
      'taxonomies'         => ['post_tag','category'],
      'supports' => ['title', 'editor', 'revisions', 'thumbnail','page-attributes','excerpt']
    ];
    $required_labels = [
      'singular_name' => ucwords($this->type),
      'plural_name' => ucwords($this->type)
    ];

    $this->options = $options + $default_options;
    $this->labels = $labels + $required_labels;
    $this->options['labels'] = $labels + $this->default_labels();
    add_action('init', array($this, 'register'));

  }

  /**
   * Registers the content type using WP core function(s)
   * @return null
   */
  public function register() {
    register_post_type($this->type, $this->options);
  }

  /**
   * Creates intelligent default labels from the required singular and plural labels
   * @return array
   */
  public function default_labels() {

    return [
      'name' => $this->labels['plural_name'],
      'singular_name' => $this->labels['singular_name'],
      'add_new' => 'Add New ' . $this->labels['singular_name'],
      'add_new_item' => 'Add New ' . $this->labels['singular_name'],
      'edit' => 'Edit',
      'edit_item' => 'Edit ' . $this->labels['singular_name'],
      'new_item' => 'New ' . $this->labels['singular_name'],
      'view' => 'View ' . $this->labels['singular_name'] . ' Page',
      'view_item' => 'View ' . $this->labels['singular_name'],
      'search_items' => 'Search ' . $this->labels['plural_name'],
      'not_found' => 'No matching ' . strtolower($this->labels['plural_name']) . ' found',
      'not_found_in_trash' => 'No ' . strtolower($this->labels['plural_name']) . ' found in Trash',
      'parent_item_colon' => 'Parent ' . $this->labels['singular_name']
    ];

  }
}

Hopefuly这只是我的坏事而不是Wordpress问题。

1 个答案:

答案 0 :(得分:0)

我通过转到wordpress cms中的Settings-&gt;固定链接并将设置更改为其他设置来解决问题。执行此操作后保存并重新显示页面。

此后更改它解决了我的问题!