防止将FrontPage删除/移动到垃圾桶

时间:2014-01-28 作者:Edd Clark

我想使用以下方法防止删除我的frontpage/将其移动到垃圾箱:

add_action( \'wp_trash_post\',      \'tcb_page_delete_check\' );
add_action( \'before_delete_post\', \'tcb_page_delete_check\' );
function tcb_page_delete_check( $post_id ){
    $frontpage = get_option( \'page_on_front\');
    $blogpage = get_option(\'page_for_posts\'); 
      if( $post_id === $frontpage || $post_id === $blogpage ) {
        wp_redirect(admin_url(\'edit.php?post_type=page\'));
        exit;
      }
}
问题是,当我单击“垃圾箱”时,选项(“page\\u on\\u front”)的ID get从7(这是我想要的frontpage ID)更改为0,因此它与frontpage ID从不匹配,并将我的页面移动到垃圾箱。

如果我将其更改为:

    if( $post_id === 7 ...
页面不会移动到垃圾箱,但选项(“page\\u on\\u front”)的ID更改为0。

如何防止选项(“page\\u on\\u front”)更改为0,以便我的frontpage保持不变,不会被丢弃?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您的代码段有两个问题:

1) 比较第一个问题是:

  if( $post_id === $frontpage || $post_id === $blogpage ) {
你严格地比较int 具有string.

请注意=== 比较将仅返回TRUE 如果两个变量的类型相同,且值相同。

请尝试以下操作:

  if( $post_id == $frontpage || $post_id == $blogpage ) {
在哪里== 将执行类型转换,或仅使用(int) 类型转换:

  if( $post_id === (int) $frontpage || $post_id === (int) $blogpage ) {
您也可以使用intval().

2) 优先级第二个问题是回调优先级。您应该更早地运行回调,例如,使用优先级1 而不是默认值10:

add_action( \'wp_trash_post\',      \'tcb_page_delete_check\', 1 );
add_action( \'before_delete_post\', \'tcb_page_delete_check\', 1 );
希望这有帮助。

结束

相关推荐

在FrontPage上,分页在某种程度上是有效的,当点击“prev”时不会更新

我遵循了本页上非常简单的教程:http://wp.tutsplus.com/tutorials/wordpress-pagination-a-primer/ (向下滚动到“更好的解决方案”)-他让它看起来很简单,它的工作原理是分页链接在那里,URL在地址栏中更改,但当单击2或3时,它实际上不会更新。。网站-chrisayreswebdev。com/besh我知道我错过了什么,只是不知道错过了什么。有什么想法吗?谢谢编辑:函数。php:function paginate() { global $wp