我一直在跟踪Steve Marks的教程,该教程将帖子中的信息添加到新的SELECT *
FROM users
WHERE us_username = 'has$$1234nd'
AND us_password = '1234'
以及通常的Database Table
。但无论我尝试什么,它都不会将信息存储在新表中,任何人都可以看到我出错的地方吗?
教程可在此处获取:http://biostall.com/performing-a-radial-search-with-wp_query-in-wordpress
我的帖子类型是postmeta
,我将自定义帖子类型的名称与函数中的名称相同,以查看我是否遗漏了某些内容。
我曾经在db中创建表的festival-event
是:
SQL
我的CREATE TABLE IF NOT EXISTS `lat_lng_post` (
`post_id` bigint(20) unsigned NOT NULL,
`lat` float NOT NULL,
`lng` float NOT NULL
) ENGINE=InnoDB;
文件中的函数是:
functions.php
答案 0 :(得分:2)
如果没有看到您正在关注的教程,很难说出问题所在。但是,这个区块让我觉得这是一种非常奇怪的检查帖子类型的方法:
if ( 'location' != $_POST['festival-event'] )
{
return;
}
尝试将该块更改为以下内容:
if ( get_post_type( $post_id ) != 'festival-event'] )
{
return;
}
或者,如果您使用的是WordPress 3.7或更高版本,则可以完全删除该块并挂钩save_post_festival-event
。在这种情况下,您的最后一行看起来像
add_action('save_post_festival-event', 'save_lat_lng')
编辑:使这项工作与ACF
function save_lat_lng( $post_id )
{
// Check that we are editing the right post type
if ( get_post_type($post_id) != 'festival-event' || empty($_POST['acf'] ))
{
return;
}
global $wpdb;
$fields = $_POST['acf'];
// Check if we have a lat/lng stored for this property already
$check_link = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM lat_lng_post WHERE post_id = %d", $post_id
));
if (!empty($check_link))
{
// We already have a lat lng for this post. Update row
$wpdb->update(
'lat_lng_post',
array(
"lat" => $fields['lat_field_name'],
"lng" => $fields['lng_field_name']
),
array( "post_id" => $post_id ),
array(
"%f",
"%f"
)
);
}
else
{
// We do not already have a lat lng for this post. Insert row
$wpdb->insert(
"lat_lng_post",
array(
"post_id" => $post_id,
"lat" => $field['lat_field_name'],
"lng" => $field['lng_field_name']
),
array(
"%d",
"%f",
"%f"
)
);
}
}
add_action( 'acf/save_post', 'save_lat_lng', 1 );
*注意,您必须将lat_field_name
和lng_field_name
更改为您通过ACF创建字段时设置的内容。
我还更改了您的查询以使用$wpdb->prepare
虽然与此问题无关,但我建议您不要创建没有wordpress前缀的自定义表格wp_
答案 1 :(得分:0)
虽然来自@GentlemanMax的答案相对有用,但实际的错误是新手错误并由我在另一个网站上解决,答案是这个
if ( 'festival-event' != $_POST['post_type'] )
而不是这个
if ( 'post_type' != $_POST['festival-event'] )