it-swarm-es.com

Agregar un archivo de publicaciones al menú de navegación en WordPress 3.0

Hola a todos, estoy jugando con WordPress 3.0 y dos (2) de las nuevas funciones, Tipos de mensajes personalizados y Menú Editor .

Comencé creando un nuevo tipo de publicación llamada "products", como ha adivinado, esta lista de productos.

Estoy usando la plantilla estándar de bog y estoy creando un nuevo menú para reemplazar la barra de navegación superior. Por lo que puedo ver, solo puedo agregar ciertos "productos" , no puedo agregar un "archivo" de productos. Lo que estoy tratando de hacer es agregar un enlace al menú para ir a una página que enumera TODOS los productos.

¿Alguna idea de cómo hacer esto?

10
dotty

@dotty Como puede ver en este ticket de trac: Debería haber páginas de índice para los tipos de correos personalizados por lo que, obviamente, la necesidad aún no ha sido Abordado en el núcleo de WordPress.

Tanto @John P Bloch como @Chris_O te dan buenas alternativas; Te voy a dar una tercera.

A "Productos" Página

Primero cree unPáginapara su tipo de publicación personalizada y llámelo "Productos". Eso le dará la siguiente URL:

http: //example.php/products/

A "Lista de productos" Código corto

A continuación, cree un Shortcode que puede incrustar en su "Productos" página. En mi ejemplo lo llamé [product-list]. Aquí hay una captura de pantalla de cómo se vería usarla:

 A Product's Page that uses a Shortcode to display a list of Products in WordPress 
(fuente: mikeschinkel.com )

Tenga en cuenta que dicho código abreviado sería un gran candidato para agregar muchas funcionalidades opcionales y permitir que funcione para muchos tipos de publicaciones diferentes, pero en aras de la claridad, prácticamente lo he codificado todo. Por supuesto, puede usarlo como punto de partida para su propio código abreviado:

<?php
add_shortcode('product-list', 'my_product_list');
function my_product_list($args) {
  $save_post = $GLOBALS['post'];  // Save state so you can restore later
  $post_type = 'product';
  $template_file = get_stylesheet_directory() . "/post-{$post_type}.php";
  if (!file_exists($template_file)) {
    return "<p>Missing template [$template_file].</p>";
  } else {
    global $post;
    $q = new WP_Query("showposts=10&post_type={$post_type}&orderby=title&order=ASC");
    $rows = array();
    $rows[] = '<div class="post-list ' . $post_type . '-post-list">';
    global $post_list_data;
    $post_list_data = array();
    $post_list_data['post_count'] = $post_count = count($q->posts);
    foreach ($q->posts as $post) {
      $q->the_post();
      ob_start();
      include($template_file);
      $rows[] = ob_get_clean();
    }
    $rows[] = '</div>';
    $GLOBALS['post'] = $save_post;
    return implode("\n",$rows);
  }
}

Un archivo de plantilla de tema post-product.php

A continuación, deberá crear un archivo de plantilla de tema que solo muestre un producto. La función que implementa el shortcode nombra el archivo de plantilla post-product.php y aquí hay un buen punto de partida:

<?php
/**
 * post-product.php - File to display only one product within a list of products.
 */
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
  <h2 class="entry-title"><?php the_title(); ?></h2>
  <div class="entry-content">
    <?php the_content(); ?>
  </div>
</div>

Añadir la opción de menú

Por último querrás añadir la opción de menú. Esto es muy sencillo, como puede ver en esta captura de pantalla (lo siguiente asume que no ha hecho nada con los menús de WordPress 3.0 anteriormente y que está utilizando un tema que admite menús de WordPress 3.0 como Twenty Ten):

  1. Seleccione la opción de menú en el menú de administración.
  2. Haga clic en "+" para agregar un nuevo menú.
  3. Escriba el nombre de su menú, lo que quieras.
  4. Haga clic en el botón "Crear menú" (la captura de pantalla muestra "Guardar menú" pero será "Crear menú" cuando se agregue.)
  5. Seleccione su nuevo menú como su "Navegación principal".
  6. Seleccione su página "Productos".
  7. Haga clic en "Agregar al menú"
  8. Haga clic en "Guardar menú"

 Adding a Products Page Menu Option to a WordPress Site 
(fuente: mikeschinkel.com )

Finalmente, la salida.

Y esto es lo que podría parecer una lista de productos básicos:

 A List of Products using a Custom Post Type in WordPress 
(fuente: mikeschinkel.com )

12
MikeSchinkel

Esto no es soportado de forma nativa por WordPress. Sin embargo, podría agregar esto a su archivo functions.php y funcionaría:

function give_me_a_list_of_products(){
  add_rewrite_rule( 'products/?$', 'index.php?post_type=products', 'top' );
}

add_action( 'init', 'give_me_a_list_of_products' );

Eso le dará example.com/products/ como una lista de productos. A partir de ahí, solo agrega un enlace personalizado a su menú.

Sin embargo, si desea un verdadero archivo (por mes, año, etc.) con feeds, necesita un código más detallado. Si sus 'productos' son un tipo de publicación no jerárquica (parece que deberían serlo), puede usar mi complemento:

http://www.wordpress.org/extend/plugins/custom-post-permalinks/

Eso le brinda campos adicionales para personalizar sus enlaces permanentes (como puede hacer con publicaciones de blog), y le dará la posibilidad de personalizar enlaces permanentes según la categoría, el autor, el mes, el año, el tipo de publicación, etc.

4
John P Bloch

Creo que es una mejor solución para crear a través de una publicación personalizada, escriba un tipo de publicación Archivar y mueva las publicaciones archivadas en este archivo. También agregue el post_type actual al postmeta de este nuevo post_type para deshacer esto. He escrito un complemento para esto y, actualmente, puede ver esto, sin hojas de estilo, imágenes ni archivo de idioma, en Gist.github/978690 .

0
bueltge
Por lo que puedo ver, solo puedo agregarle ciertos "productos", no puedo agregar un "archivo" de productos. Lo que estoy tratando de hacer es agregar un enlace al menú para ir a una página que enumera TODOS los productos. ¿Alguna idea de cómo hacer esto?

Deberá asignar una taxonomía al tipo de publicación "productos" y luego agregar el término de taxonomía a uno de sus menús personalizados, que luego llevará al usuario a una página de archivo de todos los productos bajo la taxonomía utilizada.

Ejemplo Tengo un tipo de publicación personalizada llamada "Trabajos" con una taxonomía denominada "posiciones" alt text

Si quisiera todos los trabajos con el término de taxonomía "Aperturas actuales", lo seleccionaría y lo agregaría al menú. alt text

Si necesita tener todos los tipos de publicaciones de sus "productos" en la página de archivo, puede asignarles una taxonomía principal a todos ellos para que todos puedan aparecer en la lista de la página de archivo.

0
Chris_O