我制作了这个动作挂钩,每当自定义帖子类型“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时遇到了问题。
欢迎任何替代解决方案。谢谢
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调用。