2013-06-28 123 views
0

我最後一個問題有點混亂。所以我重新創建了這個問題來更好地闡明。此主題的以前開發者爲幻燈片自定義帖子類型提供了很多功能add_meta_box();Meta Box,WordPress和新標籤頁/窗口

有三個「元盒子」:

  1. 就是「通古斯旗幟」,以顯示在滑塊文本。它不在這個網站上使用(所以忽略這個);
  2. 另一個是「鏈接滑塊」,在圖像上插入鏈接。此鏈接可以是內部鏈接或外部鏈接。
  3. 創建的這一個是「Target do Banner」,在圖像的鏈接處插入一個目標。如果用戶選擇「nova janela」選項,頁面將在新窗口(或標籤)中打開。如果用戶選擇「mesma janela」選項,頁面將在同一個窗口(或選項卡)中打開。

問題是:我無法讓「Target do Banner」工作。我做了一個SELECT。但我不知道什麼是最好的選擇。

另外:我知道我可以使所有鏈接在外部窗口中打開。但我的客戶正在要求「選擇」。

這是slider.php的代碼。以下是index.php的代碼(其中滑塊已生成)。圖像是一個縮略圖。

<?php 

add_action('init', 'slider_register'); 

// adiciona ao admin_init a função slider_register. (Toda vez que iniciar o ADMIn iniciara esta função) 
// register_post_type(); responsavel para registrar o POST TYPE. 

function slider_register() { 

$labels = array(
    'name' => _x('Sliders', 'post type general name'), 
    'singular_name' => _x('Slider', 'post type singular name'), 
    'add_new' => _x('Adicionar Novo', 'galeria item'), 
    'add_new_item' => __('Adicionar novo slider'), 
    'edit_item' => __('Editar slider'), 
    'new_item' => __('Novo slider'), 
    'view_item' => __('Ver slider'), 
    'search_items' => __('Procurar slider'), 
    'not_found' => __('Nada encontrado'), 
    'not_found_in_trash' => __('Nada na lixeira'), 
    'parent_item_colon' => '' 
); 

$args = array(
    'labels' => $labels, 
    'public' => true, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'query_var' => true, 
    'menu_icon' => get_stylesheet_directory_uri() . '/slider.png', 
    'rewrite' => true, 
    'capability_type' => 'post', 
    'hierarchical' => false, 
    'menu_position' => null, 
    'supports' => array('title','editor','thumbnail') 
); 

register_post_type('slider' , $args); 

} 


add_action("admin_init", "admin_init"); 

function admin_init(){ 
    add_meta_box("legenda_banner", "Legenda do slider", "legenda_banner", "slider", "side", "low"); 
    add_meta_box("link_banner", "Link do slider", "link_banner", "slider", "side", "low"); 
    add_meta_box("target_banner", "Target dp Banner", "target_banner", "slider", "side", "low"); 
} 

function legenda_banner(){ 
    global $post; 
    $custom = get_post_custom($post->ID); 
    $legenda_banner = $custom["legenda_banner"][0]; 
    ?> 
    <label>Legenda do banner:</label> 
    <input name="legenda_banner" type="text" value="<?php echo $legenda_banner; ?>" /> 
    <?php 
} 

function link_banner(){ 
    global $post; 
    $custom = get_post_custom($post->ID); 
    $link_banner = $custom["link_banner"][0]; 
    ?> 
    <label>Link do banner:</label><br/> 
    <input name="link_banner" type="text" value="<?php echo $link_banner; ?>" /> 

    <?php 
} 

function target_banner(){ 
    global $post; 
    $custom = get_post_custom($post->ID); 
    $link_banner = $custom["link_banner"][0]; 
    ?> 
    <label>Target do banner:</label><br/> 
<select name="target_banner"> 
    <option value="_blank">Nova Janela</option> 
    <option value="_self">Mesma Janela</option> 
</select> 

    <?php 
} 

add_action('save_post', 'save_details'); 

function save_details(){ 
    global $post; 
    update_post_meta($post->ID, "legenda_banner", $_POST["legenda_banner"]); 
    update_post_meta($post->ID, "link_banner", $_POST["link_banner"]); 
    update_post_meta($post->ID, "target_banner", $_POST["target_banner"]); 

} 

現在的index.php的代碼(我複製滑塊只代碼)。

       <section class="banner-main"> 
       <a href="#" class="prev">Anterior</a><?php 
         $recentPosts = new WP_Query(); 
         $args = array(

          'post_type' => 'slider' 
         ); 
         $recentPosts->query($args); 
        ?> 

       <ul> 


        <?php 

          while ($recentPosts->have_posts()) : $recentPosts->the_post(); 

        ?> 
        <li><a href="<?php echo get_post_meta($post->ID, 'link_banner', true); ?>" target="<?php echo get_post_meta($post->ID, 'target_banner', true); ?>"><?php the_post_thumbnail(); ?></a></li> 

        <?php endwhile;?> 

       </ul> 
       <a href="#" class="next">Próximo</a> 
      </section> 
+0

你的代碼有很多錯誤的東西。例如,更新'$ _POST'數據而不檢查它的存在或真實性(很大的安全漏洞)。 [wordpress.se]中的[許多工作示例](http://wordpress.stackexchange.com/search?tab=votes&q=%2bsave_post%20%2bupdate_post_meta%20is%3aanswer)。您最好使用[高級自定義字段](http://wordpress.org/plugins/advanced-custom-fields/),甚至保留相同的帖子元名稱。 – brasofilo

+0

Hi @brasofilo此代碼不是我的。我只是「使用」了相同的想法,試圖使頁面空白。但我會用ADC,謝謝。 – starkbr

+0

如果您想自己編寫代碼,請按照我提供的WPSE鏈接進行操作。否則,ACF是一個很好的工具。現在,如果項目需要高度定製的東西,我只手工製作自定義字段和元框。 – brasofilo

回答

0

由於代碼亂七八糟,我決定用我的風格重新編寫代碼。我還會使用Advanced Custom Field插件。

感謝您的所有答案。