Php 元框、WordPress和新选项卡/窗口

Php 元框、WordPress和新选项卡/窗口,php,javascript,wordpress,wordpress-theming,Php,Javascript,Wordpress,Wordpress Theming,我的最后一个问题有点让人困惑。因此,我重新创建了这个问题,以便更好地澄清。该主题的前一位开发人员使用函数add_meta_box()进行了很多选择用于幻灯片自定义帖子类型 有三个“元框”: 是“Legenda横幅”,用于在滑块上显示文本。这个网站没有使用它(所以忽略这个) 另一个是“链接执行滑块”,用于在图像上插入链接。此链接可以是内部链接,也可以是外部链接 创建的这个是“目标do横幅”,用于在图像链接处插入目标。如果用户选择“nova janela”选项,页面将在新窗口(或选项卡)中打开。如果

我的最后一个问题有点让人困惑。因此,我重新创建了这个问题,以便更好地澄清。该主题的前一位开发人员使用函数
add_meta_box()进行了很多选择用于幻灯片自定义帖子类型

有三个“元框”:

  • 是“Legenda横幅”,用于在滑块上显示文本。这个网站没有使用它(所以忽略这个)
  • 另一个是“链接执行滑块”,用于在图像上插入链接。此链接可以是内部链接,也可以是外部链接
  • 创建的这个是“目标do横幅”,用于在图像链接处插入目标。如果用户选择“nova janela”选项,页面将在新窗口(或选项卡)中打开。如果用户选择“mesma janela”选项,页面将在同一窗口(或选项卡)打开
  • 问题是:我不能让“目标做横幅”起作用。我做了一个选择。但我不知道什么是最好的选择

    另外:我知道我可以在外部窗口中打开所有链接。但我的客户要求一个“选择”

    这是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"]);
    
    }
    
    
    Legenda do横幅:
    
    由于代码乱七八糟,我决定用我的风格重新编写代码。我还将使用插件


    谢谢你的回答。

    你的代码有很多错误。例如,更新
    $\u POST
    数据时不检查其存在性或真实性(安全漏洞很大)。在里面您最好使用甚至维护相同的帖子元名称。嗨@brasofilo,这段代码不是我的。我只是“使用”了同样的想法,试图让页面空白。但是我会使用ADC,谢谢。如果你想自己编码,请遵循我提供的WPSE链接。否则,ACF是一个很好的工具。现在,如果项目需要高度定制的东西,我只能手工定制字段和元框。
                                    <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>