2014-07-07 139 views
0

我试图获得与链接到外部链接的链接标题相同的插件Pages Link To。我不想使用插件的原因是链接在保存帖子时动态生成,但我无法使用外部链接更新帖子的永久链接。将链接标题链接到外部链接而不是链接

下面是我的functions.php代码:

function savepost($post_id) { 
    if($_POST['post_type'] == 'books'){ 
    $genre = strip_tags(get_field('genre')); 
    $author = strip_tags(get_field('author')); 
    $extlink = "http://www.".$genre."/".$author.".com"; 

    update_post_meta($post_id, 'extlink', $extlink); 

    $url = strip_tags(get_field('extlink',$post)); 
    update_post_meta($post_id, 'post_link', $url); 
} 
} 
add_action('save_post', 'savepost'); 

我尝试中,我分配了一个模板后的另一种方法,这样,当后加载它重定向到链接,但它不会重定向

我的代码

<?php 
ob_start(); 
?> 
<?php 
/** 
* Template Name: post Redirection Template 
*/ 
get_header(); 

$redirecturl = strip_tags(get_field('extlink',$post)); 

wp_redirect($redirect_url); 

get_sidebar(); 
get_footer(); 

?> 
<?php 
ob_end_flush(); 
?> 

回答

1

你应该做的,就是插入外部链接的自定义字段中的文章编辑器,然后代替显示自定义字段值。您可以使用插件(如Advanced Custom Fields)从自定义字段获取URL。

编辑1:使用高级自定义字段插件作为示例的更多说明。此示例的字段名称是url

,无论你想自定义固定链接出现整个网站,比如你archive.phpcategory.php等更换,看起来像这样的代码,你应该使用这样的:

<a href="<?php echo the_permalink();"><?php the_title(); ?></a> 

与此:

<?php 
$value = get_field("url"); 
if($value) { ?> 
<a href="<?php echo $value;?>"><?php the_title(); ?></a> 
<?php } else { ?> 
<a href="<?php echo the_permalink();"><?php the_title(); ?></a> 
<?php } ?> 

编辑2:澄清附加信息。

您可以为主题的header.php添加一个函数,检查url是否设置,然后重定向到外部链接,如果用户直接进入永久链接,它仍会重定向它们。实际上,您可以使用此代码而不使用上述代码来显示外部链接。

<?php 
$value = get_field("url"); 
if($value) { 
header('Location: '.$value); 
die(); 
} else {} ?> 

警告:确保任何HTML(或文本)之前使用此代码已经被传递给浏览器,否则将无法正常工作。

+0

我更新了代码并尝试了你所说的,但它并没有取代默认的永久链接..plz正确的代码我似乎无法弄清楚什么是错的 – user3449454

+0

你在哪里更新你的代码?在上面的functions.php中? – michaelrmcneill

+0

是把它放在functions.php – user3449454