GET_POST_META在循环内不工作

时间:2012-12-22 作者:gteh

我希望在我的创世记儿童主题中添加一个自定义元框,以获得一些帮助。

数据被正确地保存和存储,但当我尝试使用get\\u post\\u 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\\U文本

$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\' => \'\'
    )
)
);

3 个回复
SO网友:s_ha_dum

第二个代码块没有“不当”之处。它只是为了调试而写的。关键的区别在于第二个块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;
}
或者试着拉进去$post 具有global.

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;
}
或者,根据动作的编写方式might 工作

add_action (\'genesis_before_post_content\', \'gteh_tagline\');
function gteh_tagline($post) {
    $meta = get_post_meta($post->ID, $field[\'dbt_text\'], true);
    echo $meta;
}

SO网友:Pontus Abrahamsson

您需要设置$post 函数中的全局:

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\');

SO网友:Otto

第一个函数有两个问题:

在使用$post->ID之前,请使用get\\u the\\u ID()或global the$post。

函数中未在任何位置定义$字段[\'dbt\\U text\']。这也应该来自全球吗?

编辑:在阅读了您的评论和对其他答案的回复后,我认为您不了解PHP的变量作用域是如何工作的。您可能想了解这一点,以了解变量在函数中的工作方式:

http://php.net/manual/en/language.variables.scope.php

结束

相关推荐

GET_POST_META在循环内不工作 - 小码农CODE - 行之有效找到问题解决它

GET_POST_META在循环内不工作

时间:2012-12-22 作者:gteh

我希望在我的创世记儿童主题中添加一个自定义元框,以获得一些帮助。

数据被正确地保存和存储,但当我尝试使用get\\u post\\u 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\\U文本

$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\' => \'\'
    )
)
);

3 个回复
SO网友:s_ha_dum

第二个代码块没有“不当”之处。它只是为了调试而写的。关键的区别在于第二个块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;
}
或者试着拉进去$post 具有global.

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;
}
或者,根据动作的编写方式might 工作

add_action (\'genesis_before_post_content\', \'gteh_tagline\');
function gteh_tagline($post) {
    $meta = get_post_meta($post->ID, $field[\'dbt_text\'], true);
    echo $meta;
}

SO网友:Pontus Abrahamsson

您需要设置$post 函数中的全局:

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\');

SO网友:Otto

第一个函数有两个问题:

在使用$post->ID之前,请使用get\\u the\\u ID()或global the$post。

函数中未在任何位置定义$字段[\'dbt\\U text\']。这也应该来自全球吗?

编辑:在阅读了您的评论和对其他答案的回复后,我认为您不了解PHP的变量作用域是如何工作的。您可能想了解这一点,以了解变量在函数中的工作方式:

http://php.net/manual/en/language.variables.scope.php

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: