将标题链接到外部链接而不是永久链接

时间:2014-07-07 16:02:11

标签: php wordpress plugins

我试图获得与插件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 个答案:

答案 0 :(得分:1)

您应该做的是,在帖子编辑器中将外部链接作为自定义字段插入,然后显示自定义字段值以代替the_permalink()。您可以使用Advanced Custom Fields等插件从自定义字段中获取网址。

编辑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添加一项功能,检查是否设置了网址,然后以这种方式重定向到外部链接,如果您的用户直接转到固定链接,它仍会重定向它们。实际上,您可以使用此代码而无需使用上述代码来显示外部链接。

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

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

相关问题