如何在POST-SLUG中挂钩存储-POST函数以使用分类法术语?

时间:2016-07-09 作者:Mihir

钩住save post函数,检查是否附加了分类术语。如果是附加的,那么在post slug中使用分类术语,如“分类术语其他单词”。。。

1 个回复
SO网友:Jonas Lundman

要解决您的魔术问题,您可能需要一个小小的流程链,或者只是做一些明显简单的事情。

如果我理解正确的话,最后,你正在保存的当前帖子,是否要通过将任何“属于”的术语名称推到帖子url(slug)中来更改其slug(url)?

Scenario A)如果这不是一个自动过程/批处理,只需在帖子标题下编辑slug并输入您想要的单词,然后单击更新帖子。

Scenario B)钩入save_post 采取行动,做很多事情:

首先看一下:Codex 适用于:

wp_get_object_terms($post_id...
wp_set_object_terms($post_id...
最后,该过程将调用:

wp_update_post(array(
    \'ID\' => $post_id,
    \'post_name\' => \'some-new-slug\'
));
在内部工作add_action(\'save_post\', \'do_stuff\') 具有wp_update_post() 记住,一旦完成,就要删除动作,以防止出现经典的不定式循环。

您还必须决定要使用哪个术语?类别标签产品颜色?所有这些分类法和更多分类法都可能存在于一篇文章中或与之相关。

好吧,这是一个宏、shell或想法point you in the direction:

function do_stuff($post_id){
    remove_action(\'save_post\', \'do_stuff\');
    global $post;
    $current_slug = $post->post_name;
    $categories = wp_get_object_terms($post_id, \'category\', array(\'fields\' => \'slug\'));
    foreach(... Look at codex link above, you only might need ONE slug to merge with.

    $new_slug = $current_slug.\'-\'.$category_slug;

    wp_update_post(array(
        \'ID\' => $post_id,
        \'post_name\' => $new_slug
    ));

}
add_action(\'save_post\', \'do_stuff\');
希望你的骨头上有肉,或者像我们在瑞典说的那样有肉。

相关推荐