私は私の創世記の子テーマに追加したカスタムメタボックスでの支援を望んでいました。
データは正しく保存され、正しく保存されていますが、get_post_metaを使用してエコーアウトしようとしても、何も表示されません。しかし、誰かが私に見せたカスタム関数はそれを反映しています。誰かがそれが機能していないことを理解することはできますか?
これはうまくいくはずですが、うまくいきません。
add_action ('genesis_before_post_content', 'gteh_tagline');
function gteh_tagline() {
$meta = get_post_meta($post->ID, $field['dbt_text'], true);
echo $meta;
}
これは動作しますが、私はこれを使用したくない、むしろ適切なコードを使用します
add_action ('genesis_before_post_content', 'gteh_tagline');
function gteh_tagline() {
echo "<pre>";
$customs = get_post_custom(get_the_ID());
$text = (isset($customs['dbt_text'][0]))?$customs['dbt_text'][0]:"";
var_dump($customs);
echo "<br/>text=".$text;
echo "</pre>";
}
それはこれをダンプし、尋ねられたときにそれをエコーアウトします。
["dbt_text"]=>
array(1) {
[0]=>
string(89) "At vero eos et accusamus et iusto odio dignityr simos ducimus qui blanditiis praesentium "
}
これがdbt_textです。
$prefix = 'dbt_';
$meta_box = array(
'id' => 'my-meta-box',
'title' => 'Post Tagline',
'page' => 'post',
'context' => 'normal',
'priority' => 'high',
'fields' => array(
array(
'name' => 'Post Tagline',
'desc' => 'Displayed below the post title',
'id' => $prefix . 'text',
'type' => 'text',
'std' => ''
)
)
;
2番目のコードブロックについて「不適切」なものはありません。これはデバッグ目的で書かれたばかりです。主な違いは、その2番目のブロックがget_the_ID()
を使用していたことです。試してみてください。
add_action ('genesis_before_post_content', 'gteh_tagline');
function gteh_tagline() {
$meta = get_post_meta(get_the_ID(), $field['dbt_text'], true);
echo $meta;
}
またはglobal
を付けて$post
を引き込もうとします。
add_action ('genesis_before_post_content', 'gteh_tagline');
function gteh_tagline() {
global $post;
$meta = get_post_meta($post->ID, $field['dbt_text'], true);
echo $meta;
}
あるいは、そのアクションがどのように書かれているかによって、はになるでしょう。
add_action ('genesis_before_post_content', 'gteh_tagline');
function gteh_tagline($post) {
$meta = get_post_meta($post->ID, $field['dbt_text'], true);
echo $meta;
}
関数内で$post
をglobalに設定する必要があります。
function wpse_16722_tagline() {
global $post;
$meta = get_post_meta( $post->ID, $field['dbt_text'], true );
echo $meta;
}
add_action ('genesis_before_post_content', 'wpse_16722_tagline');
最初の機能に関する2つの問題:
$ post-> IDを使う前にget_the_ID()を使うか$ postをグローバルにしてください。
$ field ['dbt_text']は関数のどこにも定義されていません。これも世界から来ているはずですか?
編集:あなたのコメントを読み、他の答えに対する答えを書いた後、私はあなたがPHPの変数スコープがどのように機能するのか理解していないと思う。変数が関数内でどのように機能するのかを理解するために、これについて読んでおくとよいでしょう。