杰里米,
出色的工作不仅仅是让它处于“自动拔模”状态。当这些类型的CPT没有标题时,这很棘手。下面是我用来完成类似任务的一些代码。
你需要根据自己的情况进行调整,但它为你展示了一种方法。特别是,您可以使用wp_insert_post_data
筛选以在将标题添加到数据库之前更改标题。现在,你可能犯的最大错误之一就是过滤所有的帖子标题。如果您不小心测试正确的上下文(例如,当您保存和/或编辑“product review”CPT时,您会发现站点中的所有标题都被破坏了。我的建议是使用元框中的nonce字段来检测何时提交了正确的表单。
这是我的代码:
add_filter(\'wp_insert_post_data\', \'change_title\', 99, 2);
function change_title($data, $postarr)
{
// If it is our form has not been submitted, so we dont want to do anything
if(defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) return;
// Verify this came from the our screen and with proper authorization because save_post can be triggered at other times
if(!isset($_POST[\'my_nonce_field\'])) return;
// If nonce is set, verify it
if(isset($_POST[\'my_nonce_field\']) && !wp_verify_nonce($_POST[\'my_nonce_field\'], plugins_url(__FILE__))) return;
// Get the associated term name
foreach($_POST[\'tax_input\'][\'complaint-type\'] as $term) {$term_id = $term;}
// Get name of term
$term = get_term_by(\'id\', $term_id, \'complaint-type\');
// Combine address with term
$title = $_POST[\'address\'][\'address1\'].\' (\'.$term->name.\')\';
$data[\'post_title\'] = $title;
return $data;
}
不要被我对标题的操控所困扰。只要意识到你需要
$data[\'post_title\']
和返回
$data
.