【问题标题】:Wordpress hook write to database before post saveWordpress 挂钩在保存后写入数据库
【发布时间】:2013-12-21 17:39:20
【问题描述】:

我是 wordpress 的初学者,我想寻求帮助。 我需要一些钩子,它将在一定数量的字符(比如 300 个)之后拆分帖子,并在每次拆分后添加我的文本。我创建了过滤器钩子,但我不知道如何创建动作钩子 - 用在保存、发布或编辑操作之前我的文本到数据库。此代码有效,但如何保存到数据库?

function inject_ad_text_after_n_chars($content) {

  $enable_length = 30;
  global $_POST;
  if (is_single() && strlen($content) > $enable_length) {

$before_content = substr($content, 0, 30);
$before_content2 = substr($content, 30, 30);
$before_content3 = substr($content, 60, 30);
$before_content4 = substr($content, 90, 30);
$texta = '00000000000000000000';  

                 return $before_content . $texta . $before_content2 . $texta . $before_content3 . $texta . $before_content4;

}
  else {
    return $content;
  }
}

add_filter('the_content', 'inject_ad_text_after_n_chars');

【问题讨论】:

  • 不清楚你在问什么,但通常有效的 WordPress 响应可能在这里更好:阅读源代码...(查找 save_post)
  • 虽然接受的答案 (Shazzad) 答案对你来说是正确的(@Denis 评论我不清楚)我必须问这个 - 你为什么要像这样将帖子插入数据库,并且不仅将拆分用于 DISPLAY 吗? (我知道它在服务器方面更有效,但更难维护/恢复)
  • 嗨,Obmerk,我特别需要这个。
  • 我知道 Denis save_post 是在帖子保存后完成的,我需要在保存之前。

标签: wordpress split character publish before-save


【解决方案1】:

您正在寻找wp_insert_post_data 过滤器。在此函数中,提供了 to 参数,以便您在插入数据之前对其进行过滤。你可以像这样使用它 -

add_filter('wp_insert_post_data', 'mycustom_data_filter', 10, 2);
function mycustom_data_filter($filtered_data, $raw_data){
    // do something with the data, ex

    // For multiple occurence
    $chunks = str_split($filtered_data['post_content'], 300);
    $new_content = join('BREAK HERE', $chunks);

    // For single occurence
    $first_content = substr($filtered_data['post_content'], 0, 300);
    $rest_content = substr($filtered_data['post_content'], 300);
    $new_content = $first_content . 'BREAK HERE' . $rest_content;

    // put into the data
    $filtered_data['post_content'] = $new_content;

    return $filtered_data;
}

【讨论】:

  • 非常感谢 Shazzad 的回复,您的代码正在运行 - 在 300 个字符后拆分并插入文本。如何修改代码拆分并为其余内容添加文本(所有帖子都需要拆分)
  • 你可以使用str_split ex str_split($filtered_data['post_content'], 300)
  • Shazzad,再次感谢您。还有一个问题 - 如何更改代码以不在单词中间插入文本?感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多