当我发布帖子时,为什么Wordpress特色图片不能保存?

时间:2017-11-30 14:04:50

标签: wordpress

我从其他开发者那里继承了这个网站。我们最近更新了高级自定义字段PRO插件来修复不同的问题,它运行正常。今天早上我接到一个电话,当添加到帖子中时会出现特色图片,但是当他们发布时,特色图片就会消失。

我已经检查过以确保允许使用精选图片。现有帖子显示特色图像,但编辑或添加新帖子然后发布不会将图像附加到帖子。

我查看了save_post钩子方法,但根本没有触及特色图像。

有什么想法吗?

这是通过'save_post'钩子添加的方法:

function save_listing($listing_id, $post) {
  global $wpdb;
  if ('listings' != $post->post_type)
    return;
  //store fullDescription, keywords and categories in wp_listings
  $full_description = get_field('listing_full_description', $listing_id);
  $keywords = get_field('listing_keywords', $listing_id);
  $terms = wp_get_post_terms($listing_id, 'listing-categories', ['fields' => 'names']);
  $categories = implode(", ", $terms);
  $tier = get_field('listing_tier', $listing_id);
  $tier = array_search($tier, ['standard', 'premium', 'platinum']) + 1;
  $wpdb->replace('wp_listings', ['id' => $listing_id, 'title' => $post->post_title, 'fullDescription' => $full_description, 'keywords' => $keywords, 'categories' => $categories, 'tier' => $tier], ['%d', '%s', '%s', '%s', '%s', '%d']);

  $locations = get_field('listing_locations', $listing_id);
  $wpdb->delete('wp_locations', ['listing_id' => $listing_id], ['%d']);
  if (!isset($locations))
    return;
  if ($post->post_status != 'publish')
    return;
  foreach ($locations as $loc_number => $location) {
    $disabled = isset($location['disable_map_location']) && $location['disable_map_location'] ? 1 : 0;

    $wpdb->insert('wp_locations', ['listing_id' => $listing_id, 'loc_number' => $loc_number, 'lat' => $location['map']['lat'], 'lng' => $location['map']['lng'],
      'zip' => $location['zip'], 'city' => $location['city'], 'state' => $location['state'], 'disabled' => $disabled], ['%d', '%d', '%f', '%f', '%s', '%s', '%s', '%d']);
  }
}

add_action('save_post', 'save_listing', 100000000, 2);

还验证了支持精选图片

if (function_exists('add_theme_support')) {  
add_theme_support('post-thumbnails'); }

我已经确认在帖子保存后,帖子元数据包含“_thumbnail_id”,并且有一个与该ID对应的帖子附件。但是,当页面重新加载时,没有特色图片。

1 个答案:

答案 0 :(得分:0)

因此,在保存后查看$ _POST然后交叉引用后元数据后,我发现_thumbnail_id没有保存在元数据中。仍不确定原因,但我通过将此代码添加到我的save_post钩子方法来修复它:

update_post_meta($post->ID, '_thumbnail_id', filter_input(INPUT_POST, '_thumbnail_id') );

这感觉有点hacky但是整个网站都是hacky:)