检查SAVE_POST挂接上的页面模板

时间:2012-08-01 作者:AlxVallejo

我正在阅读save_post Codex 我发现您需要在编辑窗口中检查$\\u请求[\'post\\u meta\\u data\',以连接到save\\u post。

我修改了示例代码:

function av_subscribe_set_parent($post_id){
/* in production code, $slug should be set only once in the plugin,
   preferably as a class property, rather than in each function that needs it.
 */
$slug = \'page\';

/* check whether anything should be done */
$_POST += array("{$slug}_edit_nonce" => \'\');
if ( $slug != $_POST[\'post_type\'] ) {
    return;
}
if ( !current_user_can( \'edit_post\', $post_id ) ) {
    return;
}
if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"],
                       plugin_basename( __FILE__ ) ) )
{
    return;
}

/* Request passes all checks; update the post\'s metadata */
if ($_REQUEST[\'_wp_page_template\'] == \'av_comment_subscribe.php\') {
    update_post_meta($post_id, \'post_parent\', 13570);
}
因此,基本上,我要检查页面模板是否设置为自定义模板,如果设置为true,则修改post\\u父元数据。

这不起作用。

1 个回复
SO网友:bueltge

您可以在保存之前检查请求值,并通过wp\\u die()获得提示

add_action( \'save_post\',\'wpse46583_save\', 10, 2 );
function wpse46583_save( $post_id, $post ) {

    // verify this is not an auto save routine. 
    if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE )
        return;

    // You should check nonces and permissions here
    if ( ! current_user_can( \'edit_page\', $post_id ) )
        return;

    if ( $_REQUEST[\'page_template\'] !== \'page-contact.php\' ) {
        // No page template assigned - do something here.
        wp_die( \'wrong template\' );
    }

    return;
}
请参见Gist 3226847

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在