2017-10-31 5 views
0

작동하지 내가 평가의 수에 따라 스타의 흔적을 보여하려는 : 나는 이것을 사용 내 템플릿 파일 내부사용자 정의 포스트 유형의 평가는 내가 내 사용자 지정 post_type에 평가를 추가 할 managaed했다 다음 코드를 사용하여

function display_game_meta_box($game) { 
    // Retrieve current name of the Author and Game Rating based on review ID 
    $game_Author = esc_html(get_post_meta($game->ID, 'game_Author', true)); 
    $game_rating = intval(get_post_meta($game->ID, 'game_rating', true)); 
    ?> 
    <table> 
     <tr> 
      <td style="width: 100%">Game Author</td> 
      <td><input type="text" size="80" name="game_Author_name" value="<?php echo $game_Author; ?>" /></td> 
     </tr> 
     <tr> 
      <td style="width: 150px">Game Rating</td> 
      <td> 
       <select style="width: 100px" name="game_rating"> 
       <?php 
       // Generate all items of drop-down list 
       for ($rating = 5; $rating >= 1; $rating --) { 
       ?> 
        <option value="<?php echo $rating; ?>" <?php echo selected($rating, $game_rating); ?>> 
        <?php echo $rating; ?> stars <?php } ?> 
       </select> 
      </td> 
     </tr> 
    </table> 
    <?php 
} 

function my_admin() { 
    add_meta_box('game_meta_box', 
     'Game Details', 
     'display_game_meta_box', 
     'games', 'normal', 'high' 
    ); 
} 
add_action('admin_init', 'my_admin'); 

선택한 금액에 따라 시작보기 :

<?php 
$nb_stars = intval(get_post_meta(get_the_ID(), 'game_rating', true)); 
for ($star_counter = 1; $star_counter <= 5; $star_counter++) { 
    if ($star_counter <= $nb_stars) { 
     echo 'star'; 
    } else { 
     echo 'grey'; 
    } 
} 
?> 

페이지를 볼 때 else 문만 실행 중입니다. 또 다른 점은 내가 백엔드에서 등급을 선택하면, 내가 선택한 5 개가 아니더라도 업데이트 후 5 개의 시작을 계속 보여줍니다. 내가 평가 문제 일 수 있습니다 아무것도

function add_movie_review_fields($game_id, $game) { 
    // Check post type for movie reviews 
    if ($game->post_type == 'games') { 

     if (isset($_POST['game_rating']) && $_POST['game_rating'] != '') { 
      update_post_meta($game_id, 'games', $_POST['game_rating']); 
     } 
    } 
} 

add_action('save_post', 'add_movie_review_fields', 10, 2); 

있습니까 :

이 내가 METABOX 데이터를 저장하려고 무엇인가?

+0

'$ nb_stars'에 문제가 있다고 생각합니다. 'var_dump ($ nb_stars)'를 실행하고 여기에 값을 게시하십시오. – Spartacus

답변

1

$nb_stars은 적절한 키를 사용하여 메타를 저장하지 않기 때문에 아마도 비어 있습니다.

function add_movie_review_fields($game_id, $game) { 
    // Check post type for movie reviews 
    if ($game->post_type == 'games') { 

     if (isset($_POST['game_rating']) && $_POST['game_rating'] != '') { 
      update_post_meta($game_id, 'game_rating', $_POST['game_rating']); // changed meta key 
     } 
    } 
} 

add_action('save_post', 'add_movie_review_fields', 10, 2); 

업데이트 할 메타 키는 가져 오는 키와 일치해야합니다. 이제 $nb_stars은 적절한 게시 메타 값을 가져야합니다.