スポンサーリンク

ページIDで指定したページへのリンクを作るショートコード

使い方:

[urlTo postid=3207]年賀状ページへのリンクを作る[/urlTo]

結果:

 

 

このショートコードの特徴は

1.draftvoid  != 0 の時は、下書きや投稿予約状態の記事へのリンクが生成されなくなる。(draftの時はvoidの設定が!falseの意味)

2.draftvoid == 0 の時は、リンクとならず挟んだ文字列がただのテキストとして出力される

3.draftvoidの値にかかわらず、記事のステータスが「公開(publish)」ならリンクが表示される。

 

使い方2:

[urlTo postid=3207 draftvoid=1]年賀状ページへのリンクを作る[/urlTo]

 

<?php
function urlToFunc($atts,$content = null){
    extract(shortcode_atts(array(
      'postid' => 0,
      'draftvoid'=>0,
    ), $atts));
  
  $ret = esc_url( home_url( '/' ) );
  
  // ページへのアドレスを作成
  if( $postid != 0){
    $ret = esc_url( home_url( '/' ) ).'?p=' . $postid;    
  }
  //下書きなどのステータスならリンクをつけない
  if(get_post_status( $postid ) != 'publish'){
    //draftvoidがtrueの時はそもそも何も表示しない
    if( $draftvoid != 0 ){
      return '';
    }
    else{
      //draftvoidがfalseの時はリンクをつけないでタイトルだけを返す
      return $content;
    }
  }
  //挟まれた文字列にaタグをつける。ついでにリンクを表す画像もつけている
  if( $content != '' ){
    $imga = '<img src="' . get_template_directory_uri() . '/data/linkto.png" width="8" height="8" />';
    return '<a href="'. $ret . '">' . $content .$imga .'</a>';
  }
  return $ret;
  
}
add_shortcode('urlTo', 'urlToFunc');
?>

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: