サポート » テーマ » 記事別に用意しておいた外部リンクを表示させる

  • すみません、お教えいただけないでしょうか?
    りんごというpegeがあります。

    ~~~下記はブラウザで表示されたもの~~~

    このりんごは農家の方が大切に育ててきたものです。
    りんごについてもっと知りたい場合は「こちらまで」

    ~~~上記はブラウザが表示したもの~~~

    上記、「こちらまで」をりんご農家のサイトへのリンクにしたいのですが、可能でしょうか?ショートコードなどで実現可能かな?と思ってみたのですが、実用的ではないかな?また実現できるのかな?と疑問に思います。

    エクセルで例えるのはおかしいと思いますが、
    “ここがこれならこれを返す”というやりかたはないものでしょうか?
    page_idを参照して別で用意しておいたURLを返す方法があればお教えいただけないでしょうか?
    漠然としていて申し訳ありませんがよろしくお願い申し上げます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 tabako0910

    (@tabako0910)

    ちなみにpageはりんごだけではなく、複数存在します。

    こんにちは

    いくつか方法はあると思いますが、

    それぞれの固定ページでリンクをひとつ書けばいいことなのではないかと思ってしまうのですが、どうしてそういうことがしたいのか、もう少し説明していただけますか?

    トピック投稿者 tabako0910

    (@tabako0910)

    お返事遅れました。申し訳ありません。
    すみません、やはり固定ページでひとつずつ書けばいいことですよね。
    色々調べていますとテンプレートを呼び出すことや、インクルードという技を知りました。
    テンプレートを呼び出すことはできましたけど完璧ではなく、インクルードを見つけましたけどどうもよくわかりません。

    ひとつ参照用のファイルを用意して、500もあるURLを登録します。
    ページIDもしくはタイトルから参照できるようにして、固定ページを作り、煩わしいURLの打ち込みやコピペをする手間を省きたいだけでした。
    「ここがこれならこれを返す、でなければ空白にする」などのようなことがしたかっただけです。

    手間を省くだけでたいした理由になってないですが、よろしくお願いいたします。

    WordPressには、フィルタという仕組みがあります。

    フィルタは、WordPressのデータベースに保存されている情報を、置換などの処理をして変更した情報を表示することができます。

    他にも、いろんなやり方があると思いますので、フィルタとかアクションといったキーワードで調べてみるといいと思います。
    %「こちらまで」%の%は、間違いなく置換文字であることを確認するだけの意味です。

    add_filter( 'the_content', 'my_notation_link' );
    
    function my_notation_link( $content ) {
    
    /* 変換対象文字列*/
    	$replace = '%「こちらまで」%';
    
    /* ページIDと、リンク先URL*/
    	$link_map = array( 24660 => 'http://www.example.com',
    					2 => 'http://www.example.com',  );
    
    	if( is_page() ) {
    		//もしページだったら、
    		$id = ( int ) get_query_var( 'p' );
    		//ページのIDを取得して
    
    		if ( array_key_exists( $id, $link_map) ) {
    
    		//ページIDと、リンク先URLのキーに、IDが存在したら
    			return str_replace(
    					$replace,
    					'<a href="'. $link_map[ $id ]. '">「こちらまで」</a>',
    					$content
    				 );
    			//文字列を置換して表示
    		}
    	}
    
    //該当がなければ、そのまま表示
    	return $content;
    }
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事別に用意しておいた外部リンクを表示させる」には新たに返信することはできません。