2009-03-28 7 views
2

私はWordpressでプログラミングと学習を始めました。PHPの関数から返されたデータをキャプチャする最良の方法は何ですか?

the_title(); //outputs the title of the page 

私はstrtolowerstr_replace機能とそれを操作できるように、文字列変数にページのタイトルをキャプチャしたいです。

私が動作させる唯一の方法は、出力バッファリングです。

ob_start(); 
the_title(); 
$result = ob_get_clean(); 

echo str_replace(" ","-",strtolower($result)); 

/*there has got to be an easier way.... 
i dont fully understand why */ 

str_replace(" ","-",strtolower(the_title())); 

私は間違っていますか?

答えて

10

あなたが本当に探していることはwp_title機能である場合は、それが取る第2引数には、それはそれを表示したり、それを返すべきか否かのブール値です。それはあなたがこれを行うことができ、VARにそれを返しますので、偽それを渡します

$mytitle = wp_title(null, false); 

そうでない場合は、あなたの唯一のオプションは、あなたが探している機能を検索し、ソースコードを変更することです。

+0

甘い願い私はこれをアップアップすることができましたが、私はあまりにも新しい感謝です – chris

3

簡単な方法はありません。あなたの関数はを返しません。文字列の場合、ですので、出力をキャプチャするには出力バッファリングを使用する必要があります。

次の例では、f1()とf2()の違いがあります。

// Returns a string, prints nothing. 
function f1() { 
    return "String"; 
} 

// Prints a string, returns nothing. 
function f2() { 
    echo "String"; 
} 
+1

*文字列の値を返すWP関数の1つを使用してください。 – Oli

+0

質問のタイトルは「WP関数がタイトルを返す」ではなく「データを取り込む最良の方法」です。 –

+0

これは何が起こっていたのか理解してくれました。ありがとうございました – chris

2

WordpressはHORRIBLEアプリでプログラミングする方法を学ぶことができます。それはこれらのグローバルな機能を使用しています。私が言うように、これは良いコードが何であるべきかの恐ろしい例です。

ありがたいことに(あなたのために)探している部分だけを返す他の関数があります。あなたが必要なものを書いているだけでなく、a full listing hereを読むことができます。あなたは神話のループの中になければならないことをメモし、どこでも使えるように注意してください。

タイトルを取得するためにさらに多くの方法がありますが起こるが、私は本当にあなたのようなものだろう。この例のために想像したとおり:

$this_post = get_post($post); // I *think* $post is the post ID inside the loop though I could be wrong 
echo $this_post->post_title; 

をしかし、あなたが使用できると言う(正確に)別のポスターとしてかなり単純なwp_title()関数は、現在のループタイトルを取得します。

これはおそらく、Wordpressのプログラミングを学ぶことが悪い考えである理由を説明したいと思います。彼らには、同じことをするのがとても難しいので、物事を守ることはほとんど不可能です。

ブログは、完全に正規化されていないため、WPのケースでは本当に単純なデータですが、ちょうどタイトルを出力する方法が1つしかないのではないかと思います。

あなたが本当に(WPの内部であることをやりかえりながら)ハッキングするのではなく、簡単なブログエンジンを作成することは、かなり迅速で楽しいです。新しい言語やフレームワークに変換します。

本当にがおもしろかったら、Djangoを見てください。


十分なWordpressの暴言。あなたがこれをやる100の方法を持っていない将来、このようなものと戦っているなら、私は本当に出力バッファのキャプチャをお勧めしません。それは比較的単純な何かのためにリソースの全体的なbuttloadを使います。

最も簡単な方法は、元の関数のソースを新しい関数に置き換え、echoreturnに置き換えるだけの簡単な方法です。

途中で途切れることが壊れる可能性があるので、エコーが最後のステートメントではない場合は、その文字列を変数として格納し、関数の

+0

情報オレのおかげで、Djangoを見ていきます。私はこのサイトは本当に私が興奮しているので、個人的に任意のプログラマーを知っていない:) – chris

1

私は皆さんと私の最終的な解決策を分かち合っていました。

これは、ワードプレスで私の体タグのユニークなidを与えることだった。Wordpressの中*/

$title =wp_title(null,false); 
echo strtolower(str_replace(' ','-',ltrim($title))); 


//without the ltrim() 2 dashes are created before the title. 
1

ほぼすべての 'the_*' 関数は、 'get_the_*' 対応しています。だから、ちょうど使用する必要があります

echo str_replace(" ","-",get_the_title()); 

そしてそれは魅力のように働くつもりです。 get_the_excerpt()、何とか命名規則を破るget_the_content()とthe_permalinkは()

乾杯(神は私が「get_the_permalink()」を書いて、それがうまくいかなかった理由に不満を感じてしまった回数を知っている)もあります!

関連する問題