web-dev-qa-db-fra.com

Réécrivez l'URL de la catégorie de type de message personnalisé pour accéder à une autre page.

Je sais que cette question générale a déjà été posée (comme ici et ici ), mais le problème vient de mon expérience limitée, je ne peux pas obtenir les résultats dont j'ai besoin en regardant le code des autres. Voici donc ma question: quel est le meilleur moyen de changer le lien de navigation "Explorer" sur cette page: http://example.com/explore/photos/

à partir de ceci: http://example.com/explore/explore/ à ceci: http: // exemple .com/explorer/ ?

Je sais que c'est un peu un bidouillage - mais avec mon thème actuel, je pense que ce serait le moyen le plus simple de faire fonctionner les choses comme je le souhaite.

De la manière dont mon thème actuel est configuré, j'ai un type de galerie personnalisé, dans lequel j'ai créé le slug pour qu'il soit "explorer" (pour correspondre à la hiérarchie des menus de mon site). Mais ensuite, pour que les "photos" apparaissent correctement dans la hiérarchie dans la chapelure à l'aide du plug-in SEO Yoast (d'après ce que j'ai compris, le plugin ne fait que suivre Wordpress lorsqu'il s'agit de permaliens), j'ai dû ajouter une galerie. catégorie parent de "explorer". Donc tout ce que je veux faire "simuler" l'url de http://example.com/explore/ à chaque fois http://example.com/explore/explore/ est affiché. Idéalement, cela se produirait côté serveur lorsque le fil d'Ariane est écrit. Ainsi, lorsque je passe la souris sur le lien dans le fil d'Ariane, http://example.com/explore/ serait montré.

1
Nathan

J'ai donc rencontré cette page ici et décidé de l'essayer une fois de plus. Et ça a marché!

J'ai pu créer un type de message personnalisé dans la galerie: une page "Photos" qui permet à "Explorer" et tout s'est parfaitement déroulé dans la chapelure en utilisant ce code dans functions.php (une "étude de cas" personnalisée pour mon message personnalisé). type nom):

//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");
2
Nathan