在SAVE_POST期间将元值附加到WordPress中的POST内容

时间:2011-01-08 作者:Sampson

问题似乎很直截了当:一旦save_post action ,我想在post_content 如果在帖子本身中还没有找到。

我试着打电话给wp_update_post() 从绑定到的函数中save_post, 但你们中的许多人会立即反对,wp_update_post() 包含do_action(\'save_post\') 这样就创建了一个无限循环。

保存/编辑帖子后,如果不调用噩梦般的无限循环,还有什么其他方法(使用API)可以根据所述帖子自定义值更新帖子的内容?

1 个回复
SO网友:Sampson

我找到的最初解决方案是将过滤器绑定到如下操作上wp_insert_post_data 并从全球$post 对象

// Tack our filter onto the wp_insert_post_data action
add_filter( \'wp_insert_post_data\', \'my_appender\' );
function my_appender( $content ) {
  // Bring global $post into scope
  global $post;
  // Get meta value of meta key \'key_name\'
  $meta_value = get_post_meta( $post->ID, \'key_name\', TRUE );
  // If value is not in content, append it onto the end
  if ( stristr( $content[\'post_content\'], $meta_value ) === FALSE )
    $content[\'post_content\'] .= $meta_value;
  // Return filtered content
  return $content;
}
我相信这会有所改善。

References

  1. add_filter() - “过滤器是WordPress启动的挂钩…”
  2. wp_insert_post_data - “wp\\u insert\\u post函数调用的筛选器挂钩…”
  3. global keyword - “变量的范围是定义它的上下文…”
  4. get_post_meta() - “此函数返回自定义字段的值…”
  5. stristr() - “查找字符串的第一个匹配项(不区分大小写)

结束