WordPress 3.0의 탐색 메뉴에 게시물 아카이브 추가


10

안녕하세요, WordPress 3.0과 2 가지 새로운 기능인 Custom Post TypesMenu Editor를 가지고 놀고 있습니다 .

products짐작했듯이이 목록 제품인 " " 라는 새 게시물 유형을 만드는 것으로 시작했습니다 .

bog 표준 템플릿을 사용하고 있으며 상단 탐색 메뉴를 대체 할 새 메뉴를 만들고 있습니다. 내가 볼 수있는 한, 특정 "제품" 만 추가 할 수 있지만 "아카이브" 제품을 추가 할 수 없습니다 . 내가하려는 것은 모든 제품을 나열하는 페이지로 이동하기 위해 메뉴에 대한 링크를 추가하는 것입니다.

이 방법을 알고 있습니까?

답변:


12

@dotty 이 trac 티켓에서 볼 수 있듯이 : 사용자 정의 게시물 유형에 대한 색인 페이지가 있어야 하므로 워드 프레스 코어에서는 아직 필요성이 해결되지 않았습니다.

@John P Bloch와 @Chris_O는 모두 좋은 대안을 제공합니다. 나는 당신에게 3을 줄 것입니다.

"제품" 페이지

먼저 사용자 정의 게시물 유형에 대한 페이지 를 작성하고 "제품"이라고 합니다. 그러면 다음 URL이 제공됩니다.

http : //example.php/products/

"제품 목록" 단축 코드

그런 다음 "제품" 페이지에 포함 할 수 있는 단축 코드 를 작성 하십시오. 내 예제에서 나는 그것을 불렀다 . 다음은이를 사용하는 모습의 스크린 샷입니다.[product-list]

단축 코드를 사용하여 WordPress에 제품 목록을 표시하는 제품 페이지
(출처 : mikeschinkel.com )

이러한 단축 코드는 많은 선택적 기능을 추가하고 다양한 게시물 유형에서 작동하도록하는 데 큰 도움이 될 수 있지만 명확성을 위해 모든 것을 거의 하드 코딩했습니다. 물론이를 자신의 단축 코드의 시작점으로 사용할 수 있습니다.

<?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);
  }
}

post-product.php테마 템플릿 파일

다음으로 하나의 제품 만 표시하는 테마 템플리트 파일을 작성해야합니다. 단축 코드를 구현하는 함수는 템플릿 파일의 이름을 지정 post-product.php하며 다음은 좋은 시작점입니다.

<?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>

메뉴 옵션 추가

마지막으로 메뉴 옵션을 추가하려고합니다. 이 스크린 샷에서 볼 수 있듯이 이것은 매우 간단합니다 (다음은 이전에 WordPress 3.0 메뉴로 아무것도하지 않았으며 Twenty Ten과 같은 WordPress 3.0 메뉴를 지원하는 테마를 사용한다고 가정합니다).

  1. 관리자 메뉴에서 메뉴 옵션을 선택하십시오.
  2. " + " 를 클릭하여 새 메뉴를 추가하십시오.
  3. 메뉴 이름을 원하는대로 입력하십시오.
  4. "메뉴 만들기" 버튼을 클릭하십시오 (스크린 샷에는 "메뉴 저장"이 표시 되지만 추가시 "메뉴 만들기" 가 표시됩니다).
  5. "기본 탐색" 으로 새 메뉴를 선택하십시오 .
  6. "제품 "페이지를 선택 하십시오.
  7. "메뉴에 추가"를 클릭하십시오
  8. "저장 메뉴"를 클릭 하십시오

WordPress 사이트에 제품 페이지 메뉴 옵션 추가
(출처 : mikeschinkel.com )

마지막으로 출력

기본 제품 목록은 다음과 같습니다.

WordPress에서 사용자 정의 게시물 유형을 사용하는 제품 목록
(출처 : mikeschinkel.com )


남은 문제는 제품 메뉴 항목을 수정하여 모든 제품의 하위 메뉴를 제공하는 방법입니다.
hakre

@harke가 업데이트되었습니다.
MikeSchinkel 오전

잘 그것은 요청이 아니었다 :). 드롭 다운이 자동으로 생성되는 방법이 궁금해서 여전히 쓸모가 없다고 생각합니다. 그러나 서면으로, 그것은 요청 이 아닙니다 .
hakre

안녕하세요, 나는 이것에 문제가 있으며 당신이 도울 수 있기를 바랍니다. 문제는 current-menu-item클래스에 적용되지 않습니다 제품 'li
Reigel

이미지가 없습니다. : /
fuxia

4

WordPress에서는 기본적으로 지원하지 않습니다. 그러나 functions.php 파일에 이것을 추가 할 수 있으며 작동합니다 :

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' );

그러면 example.com/products/가 제품 목록으로 제공됩니다. 거기에서 메뉴에 사용자 정의 링크를 추가하기 만하면됩니다.

그러나 피드를 사용하여 실제 보관 (월별, 연도 별 등)을 원하면 더 자세한 코드가 필요합니다. '제품'이 비 계층 적 게시 유형 인 경우 (필요한 것처럼 보이는 경우) 내 플러그인을 사용할 수 있습니다.

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

이를 통해 블로그 게시물과 같이 영구 링크를 사용자 정의 할 수있는 추가 필드를 제공하고 카테고리, 작성자, 월, 연도, 게시물 유형 등에 따라 영구 링크를 사용자 정의 할 수 있습니다.


여기에 좋은 정보를 주셔서 감사합니다. 나는 똑같은 것을 찾고 있지만 재 작성으로 모든 것이 잘 작동하지만 메뉴에 사용자 정의 링크를 추가 할 때 공개 웹 사이트가 방문자가 해당 페이지에 있음을 나타내는 CSS를 변경하지 않는 것처럼 보이기 때문에 붙어 있습니다. "제품"아카이브 내에있는 경우 메뉴 항목을 "켜짐"상태로 표시 할 수 있도록이 작업이 수행되는 방법을 알려주시겠습니까?
NetConstructor.com

0
내가 볼 수있는 한, 특정 "제품"만 추가 할 수 있지만 제품의 "아카이브"를 추가 할 수 없습니다. 내가하려는 것은 모든 제품을 나열하는 페이지로 이동하기 위해 메뉴에 대한 링크를 추가하는 것입니다. 이 방법을 알고 있습니까?

분류를 "제품"게시물 유형에 할당 한 다음 분류 용어를 사용자 정의 메뉴 중 하나에 추가하면 사용자가 사용 된 분류에서 모든 제품의 아카이브 페이지로 사용자를 안내합니다.

: 분류가 "positions"인 "Jobs"라는 사용자 정의 게시물 유형이 있습니다. 대체 텍스트

"현재 오프닝"분류법 용어가있는 모든 작업을 원하면 해당 작업을 선택하여 메뉴에 추가합니다. 대체 텍스트

보관 페이지에 모든 "제품"게시물 유형이 있어야하는 경우 모든 분류에 부모 분류를 지정하여 모두 보관 페이지에 나열 될 수 있습니다.


@Chris_O : 이것은 한 가지 방법이지만 유일한 방법은 아니며 사용자별로 분류를 유지하기 위해 상당한 노력이 필요합니다. 어쨌든 JMTCW.
MikeSchinkel

맞는 말이다. 사용자 지정 게시물 유형 색인 페이지가 핵심적으로 해결되기를 바랍니다.
Chris_O

0

필자는 사용자 정의 게시물 유형을 통해 게시물 유형 아카이브를 작성하고 아카이브 된 게시물을이 아카이브로 이동하는 것이 더 나은 솔루션이라고 생각합니다. 또한 현재 post_type을이 새로운 post_type의 postmeta에 추가하여 실행 취소하십시오. 나는 이것을위한 플러그인을 작성했으며 현재 gist.github / 978690 에서 스타일 시트, 이미지 및 언어 파일없이 이것을 볼 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.