php、wpについて


例えば、
<a href="<?php the_permalink(); ?>".....

といった記述があるのですが、
the_permalink() の結果を、一度変数に入れてから使い回したいと考えております。

例えば、このような感じです。
$the_permalink = the_permalink();
print "<a href=¥"$the_permalink¥".....

しかし、このようにすると、
$the_permalink = the_permalink();
と書いた時点で、the_permalink() の結果が表示されてしまいます。

the_permalink() の中を全く変更する事なく、
the_permalink() の結果を変数に入れる方法を教えて下さい。


もし、できない場合は、この質問を無視してください。

宜しくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/05/05 23:16:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268

ポイント100pt

出力制御関数というのがある様です。
http://php.net/manual/ja/ref.outcontrol.php

<?php
ob_start();
the_permalink();
$the_permalink = ob_get_clean();

こんな感じに出来るらしいです。

他2件のコメントを見る
id:TransFreeBSD

http://ideone.com/QV5ekE
関数にしました。get_obがそれ。
$output = get_ob("感数名", 引数, 引数...)
とか使います。ただ、エラー時の挙動とかがちょっと不安な感じ。

<?php
function get_ob() {
	$arg_list = func_get_args();
	if (ob_start()) {
		call_user_func_array(array_shift($arg_list), $arg_list);
		return ob_get_clean();
	}
}
2015/05/06 01:03:08
id:worldtravel

ありがとうございました。勉強になります。

2015/05/06 07:09:07

その他の回答1件)

id:dilutionist No.1

回答回数154ベストアンサー獲得回数51

get_permalink() を使って変数に入れるのはどうでしょう。

Wordpress/the_permalink()を変数で使う - kobapan @ wiki | @wiki

他2件のコメントを見る
id:dilutionist

頭にget_を付ければ取得だけできるテンプレートタグが多い、ということをリンクURLから伝えたかったのですが、言葉足らずだったですかね。
そう言えば3.9からはget_the_permalink()も使えるようになってたのをさっき思い出しました(笑
ゴーゴーウェブマーケット技術BLOG | get_the_permalinkとget_permalink

ま、解決したようなのでこれにて。

2015/05/05 23:32:56
id:worldtravel

お~~!!

殆どの関数に通用するのですかね?
試しに、しばらくこちらを使ってみます。

ありがとうございました。

2015/05/05 23:58:09
id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268ここでベストアンサー

ポイント100pt

出力制御関数というのがある様です。
http://php.net/manual/ja/ref.outcontrol.php

<?php
ob_start();
the_permalink();
$the_permalink = ob_get_clean();

こんな感じに出来るらしいです。

他2件のコメントを見る
id:TransFreeBSD

http://ideone.com/QV5ekE
関数にしました。get_obがそれ。
$output = get_ob("感数名", 引数, 引数...)
とか使います。ただ、エラー時の挙動とかがちょっと不安な感じ。

<?php
function get_ob() {
	$arg_list = func_get_args();
	if (ob_start()) {
		call_user_func_array(array_shift($arg_list), $arg_list);
		return ob_get_clean();
	}
}
2015/05/06 01:03:08
id:worldtravel

ありがとうございました。勉強になります。

2015/05/06 07:09:07
  • id:psne
    wp-includes/link-template.php の中にある、
    >>
    function the_permalink() {
    echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
    }
    <<
    こちらを呼び出している様ですので、
    >>
    $the_permalink = esc_url( apply_filters( 'the_permalink', get_permalink() );
    <<
    となるように工夫してみると良いかもしれません。(未検証です。)
  • id:worldtravel
    ぽけっとしすてむさん

    ありがとうございます。

    こちらは例として1つだけあげさせて頂いたものでして、
    wp内にある凄くたくさんの関数について同様にしたいのです。

    なので、何か共通して簡単にできる方法はないのかなと思いまして質問させて頂きました。



    ↓こういう書き方が、理解しにくくて大嫌いでして...(苦笑

    <a href="<?php the_permalink(); ?>" title="<?php echo esc_attr(sprintf(__('Permalink to %s', 'rcg-forest'), the_title_attribute('echo=0'))); ?>" rel="bookmark" class="post-thumbnail"><?php the_post_thumbnail();?></a>

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません