두 개의 사용자 정의 게시물 유형간에 관계를 작성하려면 어떻게합니까?


16

WordPress를 사용하여 TV 시리즈 데이터베이스를 만들고 싶습니다. 몇 가지 자습서를 따라 두 개의 사용자 지정 게시물 유형이 있습니다. 하나는 for movies, 하나는 for 및 series입니다. 나는 구조를 위해이 포스트를 따랐다 .

내 질문은 : 영화와 시리즈 게시물 유형 사이의 관계를 어떻게 만들 수 있습니까?


우선, 당신이 작성하지 전체 데이터베이스를, 당신은 단지 워드 프레스 '사용자 정의 포스트 유형을 만들 수 있습니다. 그리고 워드 프레스 범위 내에서 분류, 분류 등을 할 수있는 많은 기회가 있습니다. 그리고 모든 것은 좋은 내부 관계로 이루어집니다. 따라서, 당신이 이야기하고있는 관계는 이미 존재합니다. 필요한 방식으로 구현해야합니다. 따라서 지시대로 post_type을 구현 한 다음 실제 쿼리로 질문을 편집하는 것이 좋습니다.
Mayeenul Islam

@MayeenulIslam, "implement the post_type as directed"무슨 뜻인가요?
CoalaArmy

제공된 링크 스레드 에서 지시 하거나이 게시물 유형 생성기 와 같은 간단한 생성기를 사용하십시오 .
Mayeenul Islam

@MayeenulIslam : "당신이 말하고있는 관계가 이미 존재한다"고 확신하지 않습니다. 기본적으로 다른 게시물 유형간에 직접적인 관계는 없습니다.
s_ha_dum

@s_ha_dum 죄송합니다. 이미 두 가지 post_types가 있다고 말한 그의 질문 중 일부를 놓쳤습니다. 내 실수 야 나는 그의 세부 사항을 명확히하기 위해 노력하고 있습니다. 세부 사항이 이미 있다는 것을 놓쳤습니다. :( 정의 된 경우 분류 및 사용자 정의 게시물 유형의 내부 관계에 대해 이야기하고 있습니다.
Mayeenul Islam

답변:


22

플러그인 사용

관계를위한 아주 좋은 플러그인들 :

메타 박스 사용

메타 박스를 사용하여 간단한 관계를 구축 할 수 있습니다.

add_action( 'admin_init', 'add_meta_boxes' );
function add_meta_boxes() {
    add_meta_box( 'some_metabox', 'Movies Relationship', 'movies_field', 'series' );
}

function movies_field() {
    global $post;
    $selected_movies = get_post_meta( $post->ID, '_movies', true );
    $all_movies = get_posts( array(
        'post_type' => 'movies',
        'numberposts' => -1,
        'orderby' => 'post_title',
        'order' => 'ASC'
    ) );
    ?>
    <input type="hidden" name="movies_nonce" value="<?php echo wp_create_nonce( basename( __FILE__ ) ); ?>" />
    <table class="form-table">
    <tr valign="top"><th scope="row">
    <label for="movies">Movies</label></th>
    <td><select multiple name="movies">
    <?php foreach ( $all_movies as $movie ) : ?>
        <option value="<?php echo $movie->ID; ?>"<?php echo (in_array( $movie->ID, $selected_movies )) ? ' selected="selected"' : ''; ?>><?php echo $movie->post_title; ?></option>
    <?php endforeach; ?>
    </select></td></tr>
    </table>
}

add_action( 'save_post', 'save_movie_field' );
function save_movie_field( $post_id ) {

    // only run this for series
    if ( 'series' != get_post_type( $post_id ) )
        return $post_id;        

    // verify nonce
    if ( empty( $_POST['movies_nonce'] ) || !wp_verify_nonce( $_POST['movies_nonce'], basename( __FILE__ ) ) )
        return $post_id;

    // check autosave
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return $post_id;

    // check permissions
    if ( !current_user_can( 'edit_post', $post_id ) )
        return $post_id;

    // save
    update_post_meta( $post_id, '_movies', array_map( 'intval', $_POST['movies'] ) );

}

그런 다음 영화 관계를 시리즈 게시물의 목록으로 가져옵니다.

$series = new WP_Query( array(
    'post_type' => 'movies',
    'post__in' => get_post_meta( $series_id, '_movies', true ),
    'nopaging' => true
) );

if ( $series-> have_posts() ) { while ( $series->have_posts() ) {
    $series->the_post();
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ></a></li>
    <?php
} }

3
나는 메타 박스에 대한 아이디어를 좋아한다 (플러그인을 피하려고 노력한다)!
CoalaArmy

다른 게시물을 만들지 않고이 부모 / 자식 관계에서 퍼머 링크를 만드는 방법을 추가 할 수 있습니까? 예를 들면 다음과 같습니다. http://domain.com/series-name/movie-name?
Xtremefaith

@ Xtremefaith 이것은 다른 코드로 수행 할 수 있습니다. 카테고리를 위해 만든 플러그인이 있습니다. 어쩌면 당신은 참조로 사용할 수 있습니다. wordpress.org/plugins/hierarchical-urls
vmassuchetto

5

나는 추천한다 방금 사용하기 시작한 Posts 2 Posts 플러그인을 .

게시물과 페이지 유형간에 다 대다 관계를 만들 수 있으므로 링크 할 수 있습니다. moviesseries, 당신이 만들 수있는 다른 CPTS.

이 플러그인을 사용하면 연결 메타 데이터 를 생성하여 연결을 생성 할 때 세부 정보를 얻을 수 있습니다. 사용법이 매우 유연하여 관리자 메타 박스, 연결 유형 및 프런트 엔드에 연결을 표시하는 방법을 제어 할 수 있습니다. 마지막으로 잘 문서화되어 있습니다.


내가 살펴볼 게
CoalaArmy

나는 sth를 찾고 있었다. 비슷하고 다양한 솔루션을 시도했습니다. 나는이 게시물 (포스트 2 포스트)이 완벽하다고 말해야합니다. '비 프로그래머'가 찾고있는 것이 아닐 수도 있지만 sth를 더 찾고 있다면. 템플릿에서 사용할 라이브러리처럼, 이것은 완벽하고, 잘 문서화되고, 잘 통합되어 있습니다. ;)
Larzan

나는 포스트 관계를위한 작은 플러그인을했지만 wordpress.org/plugins/softmixt-relations
Softmixt

2

불행히도 Posts 2 Posts 플러그인은 더 이상 사용되지 않으며 더 이상 유지 관리되지 않습니다. 해당 MB 관계에 대한 새로운 대체 플러그인이 있습니다 . P2P에서 영감을 얻었으며 게시물, 용어 및 사용자 간의 관계를 만드는 유사한 API를 제공합니다.

MB 관계는 기본적으로 양방향 관계를 지원하고 사용자 정의 테이블을 사용하여 P2P와 같은 관계를 저장하여 사후 메타보다 성능을 향상시킵니다.

플러그인을 살펴볼 가치가 있습니다.

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