【问题标题】:Custom Field with _blank带有 _blank 的自定义字段
【发布时间】:2013-06-25 19:06:43
【问题描述】:

所以我有一个显示链接的自定义字段:

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

链接横幅代表:

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
}

我需要的是:

如果客户希望页面显示 WordPress 网站内部的链接,则目标将是 _self。如果客户希望页面显示 OUTSITE 的 wordpress,目标将是 _blank。

我创建了另一个名为 target_banner 的函数

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

  <?php
}

问题是:它不起作用。解决方案是什么? :(

想法是:

  • 1) 内部链接 -> 自我
  • 2) 外部链接 -> 空白
  • 如果客户端点击:Same Window (Mesma Janela),目标将是自己。
  • 如果客户端点击:New Window (Nova Janela),target 将为空白。

客户端必须是显示相同窗口或新窗口的选项。

我试过了,我搜索了所有的 StackOverflow 和 Google 都没有找到。

还是谢谢。 :)


网站是这个:Ítalo Bianchi

幻灯片中使用了这个大代码。

所以在后端我有三个字段。

“Legenda”是标题(暂时不用); “链接”是为了井……链接; 如果链接将在新窗口或同一窗口中打开,则为“目标”。

因此,所有内部链接都将在同一个窗口中打开,所有外部链接都将在新窗口中打开。对不起。我原来的帖子有点混乱。


如果有帮助:https://gist.github.com/anonymous/5884871

【问题讨论】:

  • 您的&lt;select&gt; 需要name 属性...通过var_dump($_POST) 调试您的帖子...另外,您的&lt;option&gt; 不需要name 属性。
  • @RobW 显示的是:array(0) { }
  • @starkbr:您是否要在新标签页中打开所有外部链接? (当然,指向您网站的博客文章/页面/等的链接除外)
  • @AmalMurali 是的。有一个显示输入字段的自定义元框。如果客户发布外部链接,它应该打开一个新选项卡。如果客户发布内部链接,它应该在当前选项卡中打开网站。

标签: php wordpress wordpress-theming


【解决方案1】:

我不清楚您编写的函数的上下文。 无论如何,我可能会用你的代码来做这个:

function my_tsel($a, $b){
    if ($a == $b){
        echo ' selected';
    }
}
function target_banner(){
    global $post;
    $custom = get_post_custom($post->ID);
    $target_banner = $custom["target_banner"][0];
  ?>
  <label>Target do banner:</label><br/>
      <select name="taget_banner">
          <option value="_blank"<?php my_tsel($target_banner, '_blank'); ?>>Nova Janela</option>
          <option value="_self"<?php my_tsel($target_banner, '_self'); ?>>Mesma Janela</option>
      </select>

  <?php
}

总的来说,我可能更喜欢自动化检查一个小函数(例如在 function.php 中)摆脱target_banner()

<?php
    function my_link(){
        $lnk = get_post_meta($post->ID, 'link_banner', true);
        $target = (strstr($lnk, get_bloginfo('url'))) ? '_self' : '_blank';

        echo '<li><a href="'.$lnk.'" target="'.$target.'">';
        the_post_thumbnail();
        echo '</a></li>';
    }
?>

在我看来(比如说 single.php)

<?php my_link(); ?>

【讨论】:

  • 我试过你的代码,但它不起作用。网站是这个:italobianchi.com.br &lt;?php my_link(); ?&gt; 用于幻灯片。所以在后端我有三个字段。 “Legenda”用于标题(暂时不会使用),“Link”用于井...链接。如果链接将在新窗口或同一窗口中打开,则为“目标”。因此,所有内部链接都将在同一个窗口中打开,所有外部链接都将在新窗口中打开。对不起。我原来的帖子有点混乱。
  • 我已经在本地沙箱和在线沙箱 (tehplayground.com) 中尝试过,这两种情况都适用。我硬编码的唯一一段代码是“get_post_meta($post->ID, 'link_banner', true)”。我认为问题应该在那里。你能给我贴一份函数返回的转储吗?
猜你喜欢
  • 2012-08-18
  • 1970-01-01
  • 2022-09-27
  • 2011-10-28
  • 2014-01-09
  • 2020-03-11
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多