从Functions.php访问插件数据

时间:2015-08-24 09:51:56

标签: php wordpress function

我试图将wordpress帖子中的数据插入新的表数据库表而不是WP_postmeta。我的功能正在运行,它根本不会插入$postid。我遇到的问题是我需要从Marty Spellerbergs' Address Geocoder'处理纬度和经度坐标。插件。

在这里可以看到https://wordpress.org/plugins/address-geocoder/的插件页面上,Marty说你可以使用这些来访问循环内的cooridnates:

<?php echo get_geocode_lng( $post->ID ); ?>
<?php echo get_geocode_lat( $post->ID ); ?>

现在我知道在functions.php文件中,我们实际上并不在内心,所以我尝试了很多不同的方法来访问这些数据,但我无法做到。有没有办法编辑Marty指定的那些行,以便可以在函数中调用它们?。

这是我多次尝试之一:

function save_lat_lng( $post_id )   
{  
    global $wpdb;  

global $post;
$custom_lat = $_POST[get_geocode_lat( $post->ID )]; 
$custom_lng = $_POST[get_geocode_lng( $post->ID )];
// Check that we are editing the right post type  
if ( 'festival-event' != $_POST['post_type'] ) 
{  
    return;  
}  

// Check if we have a lat/lng stored for this property already  
$check_link = $wpdb->get_row("SELECT * FROM lat_lng_post WHERE post_id = '" . $post_id . "'");  
if ($check_link != null)   
{  
    // We already have a lat lng for this post. Update row  
    $wpdb->update(   
    'lat_lng_post',   
    array(   
        "lat" => $custom_lat,
        "lng" => $custom_lng 
    ),   
    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" => $custom_lat,
        "lng" => $custom_lng
    ),   
    array(   
        '%d',   
        '%f',  
        '%f'  
    )   
    );  
}  
}  
add_action( 'save_post', 'save_lat_lng' )

1 个答案:

答案 0 :(得分:1)

如果您将post_id作为参数传递给函数save_lat_lng,我认为您应该更改这两行:

$custom_lat = $_POST[get_geocode_lat( $post->ID )]; 
$custom_lng = $_POST[get_geocode_lng( $post->ID )];

$custom_lat = get_geocode_lat( $post_id ); 
$custom_lng = get_geocode_lng( $post_id );

访问该参数。

如果您想检查帖子类型,还应该更改

if ( 'festival-event' != $_POST['post_type'] )

if ( 'festival-event' != get_post_type($post_id) )

以下文档:

https://codex.wordpress.org/Function_Reference/get_post_type

PS。下次你应该粘贴插件链接,这样可以节省时间:)

---更新

坐标不可用 - 问题与save_post挂钩优先级值有关。

从插件代码我看到功能更新post meta具有以下优先级:

add_action( 'save_post', array( $this, 'save_post' ), 10, 2 );

所以要在那之后运行你的钩子,你应该设置类似的东西:

add_action( 'save_post', 'save_lat_lng', 100 );