执行发布和保存功能(不只是保存)

时间:2013-04-04 作者:Eckstein

我正在使用此功能根据几个自定义字段自动设置帖子标题:

function set_event_title( $data , $postarr ) {
  if($data[\'post_type\'] == \'event\') {
    $getdate = get_post_meta($postarr[\'ID\'],\'event_datestart\',true);
    $dateformat = new DateTime($getdate);
    $date = $dateformat->format( \'m-d-Y\' );
    $event_venue = get_post_meta($postarr[\'ID\'],\'venue_name\',true);
    $event_title = $event_venue . \' - \' . $date;
    $post_slug = sanitize_title_with_dashes ($event_title,\'\',\'save\');
    $post_slugsan = sanitize_title($post_slug);
    $data[\'post_title\'] = $event_title;
    $data[\'post_name\'] = $post_slugsan;
  }
  return $data;
}
add_filter( \'wp_insert_post_data\' , \'set_event_title\' , \'99\', 2 );
但我只能在帖子更新时使用它,而不能在帖子的初始发布时使用它。有没有一种方法可以让这篇文章在保存后的第一次和其余时间都有效?

1 个回复
SO网友:Vinod Dalvi

不要从get\\u post\\u meta函数中获取meta值,而是从$postarr数组中获取meta值,因为在初始发布帖子时,数据库中没有event\\u datestart和venue\\u name的任何值,它返回空字符串。

Updated Code :

function set_event_title( $data , $postarr ) {
  if($data[\'post_type\'] == \'event\') {
    $getdate = $postarr[\'event_datestart\']; // Replace event_datestart with the input field name of event_datestart post meta.
    $dateformat = new DateTime($getdate);
    $date = $dateformat->format( \'m-d-Y\' );
    $event_venue = $postarr[\'venue_name\']; // Replace venue_name with the input field name of venue_name post meta.   
    $event_title = $event_venue . \' - \' . $date;
    $post_slug = sanitize_title_with_dashes ($event_title,\'\',\'save\');
    $post_slugsan = sanitize_title($post_slug);
    $data[\'post_title\'] = $event_title;
    $data[\'post_name\'] = $post_slugsan;
  }
  return $data;
}
add_filter( \'wp_insert_post_data\' , \'set_event_title\' , \'99\', 2 );
有关更多信息,请参阅this page.

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php

执行发布和保存功能(不只是保存) - 小码农CODE - 行之有效找到问题解决它

执行发布和保存功能(不只是保存)

时间:2013-04-04 作者:Eckstein

我正在使用此功能根据几个自定义字段自动设置帖子标题:

function set_event_title( $data , $postarr ) {
  if($data[\'post_type\'] == \'event\') {
    $getdate = get_post_meta($postarr[\'ID\'],\'event_datestart\',true);
    $dateformat = new DateTime($getdate);
    $date = $dateformat->format( \'m-d-Y\' );
    $event_venue = get_post_meta($postarr[\'ID\'],\'venue_name\',true);
    $event_title = $event_venue . \' - \' . $date;
    $post_slug = sanitize_title_with_dashes ($event_title,\'\',\'save\');
    $post_slugsan = sanitize_title($post_slug);
    $data[\'post_title\'] = $event_title;
    $data[\'post_name\'] = $post_slugsan;
  }
  return $data;
}
add_filter( \'wp_insert_post_data\' , \'set_event_title\' , \'99\', 2 );
但我只能在帖子更新时使用它,而不能在帖子的初始发布时使用它。有没有一种方法可以让这篇文章在保存后的第一次和其余时间都有效?

1 个回复
SO网友:Vinod Dalvi

不要从get\\u post\\u meta函数中获取meta值,而是从$postarr数组中获取meta值,因为在初始发布帖子时,数据库中没有event\\u datestart和venue\\u name的任何值,它返回空字符串。

Updated Code :

function set_event_title( $data , $postarr ) {
  if($data[\'post_type\'] == \'event\') {
    $getdate = $postarr[\'event_datestart\']; // Replace event_datestart with the input field name of event_datestart post meta.
    $dateformat = new DateTime($getdate);
    $date = $dateformat->format( \'m-d-Y\' );
    $event_venue = $postarr[\'venue_name\']; // Replace venue_name with the input field name of venue_name post meta.   
    $event_title = $event_venue . \' - \' . $date;
    $post_slug = sanitize_title_with_dashes ($event_title,\'\',\'save\');
    $post_slugsan = sanitize_title($post_slug);
    $data[\'post_title\'] = $event_title;
    $data[\'post_name\'] = $post_slugsan;
  }
  return $data;
}
add_filter( \'wp_insert_post_data\' , \'set_event_title\' , \'99\', 2 );
有关更多信息,请参阅this page.

相关推荐

functions php file

好的,我正在编辑我的函数。Wordpress中的php文件(关于我的子主题),我删除了一行代码(在删除之前我复制了代码)。这导致了白色的死亡屏幕,所以我简单地粘贴回我删除的代码(是的,我将它粘贴回我删除它的位置),但我仍然有白色的死亡屏幕。我已经完成了这些功能。我上周完成的一个备份中的php文件(功能齐全),并通过FTP将其上载到正确的文件夹,但没有任何效果。我已经尝试再次激活父主题,并创建了另一个子主题,以便比较这两个功能。php文件(将全新的、有效的子主题与不再工作的原始子主题进行比较),代码看起来是