是否仅在管理区运行功能?

时间:2010-12-21 作者:agileapricot

我希望这段代码只在管理区内运行,因为它也是在公共管理栏上运行的。

  /* Reorder Admin Menu to put "Pages" at the top */
  function menu_order_filter($menu) {
  $content_menu = array(\'edit.php?post_type=page\');
  array_splice($menu, 2, 0, $content_menu);
  return array_unique($menu);
  }
  add_filter(\'custom_menu_order\', create_function(\'\', \'return true;\'));
  add_filter(\'menu_order\', \'menu_order_filter\');

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

在钩子上分配几个过滤器的开销很小,这些钩子不会在前端触发。

一般来说,情况如下:

add_action(\'init\', \'admin_only\');

function admin_only() {

    if( !is_admin() )
        return;

    // filter assignemnts and such go here
}
还有create_function() 出于性能和其他原因,不建议使用。最好使用更现代的Anonymous Functions, 但对于这种情况,WordPress提供现成的__return_true() 作用

SO网友:bueltge

使用钩子admin\\u init和更高版本的钩子,init钩子实际上更像是管理员。但重要的是,当您使用li18n函数或AJAX时,最好使用init。

SO网友:Andrey Shandrov

https://developer.wordpress.org/reference/functions/is_admin/

if ( ! is_admin() ) {
     echo "You are viewing the theme";
} else {
     echo "You are viewing the WordPress Administration Panels";
}
SO网友:Khadka Pushpendra

Update in 2020, 工作答案,我去了不同的答案,没有一个在新的WordPress中有效。

function hide_categories_for_specific_user( $exclusions, $args ){

if ( ((defined( \'REST_REQUEST\' ) && REST_REQUEST) or $GLOBALS[\'pagenow\'] === \'edit.php\' ) && !current_user_can( \'manage_options\' ) ) {

   // IDs of terms to be excluded
   $exclude_array = array("12","16","17"); // CHANGE THIS TO IDs OF YOUR TERMS


   // Generation of exclusion SQL code
   $exterms = wp_parse_id_list( $exclude_array );
   foreach ( $exterms as $exterm ) {
           if ( empty($exclusions) )
               $exclusions = \' AND ( t.term_id <> \' . intval($exterm) . \' \';
       else
               $exclusions .= \' AND t.term_id <> \' . intval($exterm) . \' \';
   }

   // Closing bracket
   if ( !empty($exclusions) )
   $exclusions .= \')\';

   // Return our SQL statement

  }
   return $exclusions;
}

 // Finally hook up our filter
 add_filter( \'list_terms_exclusions\', \'hide_categories_for_specific_user\', 10, 2 );
回答来自的最终帮助Hide Some Categories in Post Editor

结束

相关推荐

获取在Functions.php中设置的变量,并在我的Custom Post模板中回显它们

在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。add_action( \'the_post\', \'paginate_slide\' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == \'lom_s