为什么我的get_post_meta总是空的

时间:2013-09-27 作者:sublimelaconic

我制作了这个动作挂钩,每当自定义帖子类型“events”中有新帖子时,它都会向用户发送一封电子邮件。

function email_members($post_id) {
global $wpdb;

$usersarray = $wpdb->get_col("SELECT user_email FROM wp_users");
$users = implode(",", $usersarray);

if( ( $_POST[\'post_status\'] == \'publish\' ) && ( $_POST[\'original_post_status\'] != \'publish\' ) ) {
    $subject = \'Event Reminder\';

    $post_url = get_permalink($post_id);
    $post_title = get_the_title($post_id);
    $event_date = get_post_meta( $post_id, \'ch_event_date\', true );

    $message = "APAC Ministries Event Reminder for: ".$post_title."\\n\\n";
    $message .= "Date: ".$event_date;

    wp_mail($users, $subject, $message );
  }
}

add_action(\'publish_th_events\', \'email_members\');
但是$event_date 它总是空的。我尝试在另一个文件中运行此代码,效果良好:

global $post;
$test = get_post_meta($post->ID, \'ch_event_date\', true);
echo $test;
我还尝试使用global $post; 和使用$post->ID 作为ID。我也尝试过获取术语,它显示得很好。我只是在显示meta时遇到了问题。

欢迎任何替代解决方案。谢谢

2 个回复
SO网友:Chris

get_post_meta 如图所示here 只不过是get_metadata. 现在,当你说你要返回的meta时,如果它不是null而是一个空字符串,这意味着你正在到达get_metadata 如图所示here. 如果将true定义为get\\u post\\u meta调用的第三个变量,则应该看到一个空字符串。如果将其更改为false,则应看到一个空数组。

现在,我们来看看为什么您处于get\\u元数据的最底层。

根据我所看到的,唯一的方法是,您实际上没有为post\\u对象定义一个名为“ch\\u event\\u date”的post\\u meta\\u字段。

也许,可以尝试在调用上方执行此操作,以获取“Chu event\\u date”作为测试:update_post_meta($post_id,\'ch_event_date\', \'Chris figured it out\');

然后转储get\\u post\\u meta调用。

SO网友:ThatDudeLarry

好的,我只是在我正在开发的一个网站上试用了它,并使用了类似于下面的东西,我可以使用自定义字段来完成您遇到的困难。

$message = print "APAC Ministries Event Reminder for: " . $post_title . "\\n\\n";
$message .= print "Date: " . $event_date;
对我来说唯一有意义的推理就是使用get_the_... 仅返回值供将来使用,不用于显示。在Codex 该功能似乎会自动打印或回显$users$subject

如果您仔细查看测试中正确显示日期的位置,您可以echo 信息技术我希望这有帮助!

结束

相关推荐

在模板的header.php中设置的全局变量无法在footer.php中回显

E、 我在标题中设置了这个。我的模板中的php:<?php $postidextra = get_the_ID(); ?> <?php $sidebar_state = get_post_meta($postidextra , \'rw_sidebar_state\', true); ?> 我可以在标题中回显$sidebar\\u状态。php,它正在工作。然而,当我尝试从页脚回显此变量时。php或页面。php它不起作用,我需要重复我的代码来获取帖子id和帖子me