基于发布的父项选择动态更改模板

时间:2013-06-28 作者:Xavi

我想在有人选择特定的帖子父项时自动更改我的页面模板。

我有更新模板的代码,但找不到任何用于检测父属性后更改的内容。你能帮忙吗?

2 个回复
SO网友:Adam

你就是这样做的。。。

function update_post_template($post_id, $post){

    //set $post_parent_id however you wish  

    if ($post->post_parent == $post_parent_id) {

        //unhook save_post action to avoid infinite loop
        remove_action(\'save_post\', \'update_post_template\'); 

        //change template
        update_post_meta( $post_id, \'_wp_page_template\', \'custom_template.php\' );

        //re-hook save_post action
        add_action(\'save_post\', \'update_post_template\');

    }
}

add_action(\'save_post\', \'update_post_template\', 10, 2);
备注:

为了解释发生了什么,首先我们将save_post 插入/更新帖子时激发的操作。然后我们检查是否存在post_parent id,由您决定和确定(您可能希望扩展此条件语句以涵盖多种情况)。如果我们找到匹配的,我们就会解开save_post 当我们调用update_post_meta 作用更新页面模板后,我们将重新挂钩save_post 行动起来,继续我们的快乐之路。

SO网友:Rush

使用MySQL你可以做到;

$result= $wpdb->get_row("select post_parent from wp_posts where ID=".$post->ID);

if(intval($result)>0)
{
     //your logic
}
else
{
     //Do something else
}

结束