重写特定的自定义帖子类型类别URL以转到另一个页面

时间:2012-10-14 作者:Nathan

我知道以前有人问过这个一般性问题(比如herehere), 但问题是由于我的经验有限,我无法通过查看其他人的代码获得所需的结果。因此,我的问题是:更改此页面上面包屑链接“Explore”的最佳方式是什么:http://example.com/explore/photos/

由此:http://example.com/explore/explore/对此:http://example.com/explore/ ?

我知道这有点像黑客——但就我目前的主题而言,我相信这是让事情按我想要的方式运行的最简单的方法。

按照我当前主题的设置方式,我有一个自定义的帖子类型的库,我将slug设置为“explore”(与我的网站的菜单层次结构相匹配)。但是,为了使用SEO Yoast插件使“照片”正确地显示在面包屑的层次结构中(据我所知,当涉及永久链接时,该插件只是遵循Wordpress),我必须添加一个“explore”的库类别父级。所以我想做的就是“伪造”的urlhttp://example.com/explore/ 无论何时http://example.com/explore/explore/ 显示。理想情况下,这将在编写面包屑时发生在服务器端,因此当我将鼠标悬停在面包屑中的链接上时,http://example.com/explore/ 将显示。

1 个回复
SO网友:Nathan

所以我遇到了this page here 决定再试一次。成功了!

我能够将gallery自定义帖子类型设置为“照片”页面的子页面,该页面是“探索”的子页面,并且在功能中使用此代码,面包屑中的一切都变得完美。php(自定义“案例研究”到我的自定义帖子类型名称):

//Add the meta box callback function
function admin_init(){
add_meta_box("case_study_parent_id", "Case Study Parent ID", "set_case_study_parent_id", "casestudy", "normal", "low");
}
add_action("admin_init", "admin_init");

//Meta box for setting the parent ID
function set_case_study_parent_id() {
  global $post;
  $custom = get_post_custom($post->ID);
  $parent_id = $custom[\'parent_id\'][0];
  ?>
  <p>Please specify the ID of the page or post to be a parent to this Case Study.</p>
  <p>Leave blank for no heirarchy.  Case studies will appear from the server root with no assocaited parent page or post.</p>
  <input type="text" id="parent_id" name="parent_id" value="<?php echo $post->post_parent; ?>" />
  <?php
  // create a custom nonce for submit verification later
  echo \'<input type="hidden" name="parent_id_noncename" value="\' . wp_create_nonce(__FILE__) . \'" />\';
}

// Save the meta data
function save_case_study_parent_id($post_id) {
  global $post;

  // make sure data came from our meta box
  if (!wp_verify_nonce($_POST[\'parent_id_noncename\'],__FILE__)) return $post_id;
    if(isset($_POST[\'parent_id\']) && ($_POST[\'post_type\'] == "casestudy")) {
      $data = $_POST[\'parent_id\'];
      update_post_meta($post_id, \'parent_id\', $data);
    }
}
add_action("save_post", "save_case_study_parent_id");

结束

相关推荐

widgetlogic and permalinks

我试图使用widgetlogic在某些页面上有条件地显示菜单。每个菜单都使用如下标记is_page(array(\"Page Name\", \"Page Name 2\" ...)), 在我尝试更改permalinks之前,它一直工作得很好(因此所有菜单都会从各自的页面中消失)。我做错什么了吗?是否有解决方法?