跳至正文

10 个用于主题自定义的 WordPress 片段

10 个用于主题自定义的 WordPress 片段

当您使用 WordPress 时,由于主题,更改网站的外观非常容易。有很多(比如一大堆)WordPress 主题可以免费或以高价使用。选择一个主题,安装它,您可以在几分钟内让您的网站焕然一新。

但除了外观和感觉之外,WordPress 主题还可以通过多种方式进行扩展。您可以使用插件构建新功能,但在这篇文章中,我们正在研究可以方便您的主题的 WordPress 功能您只需将这些函数放在主题的 functions.php 文件中,效果就会发生。

推荐阅读:如何在 WordPress 中管理和使用代码片段

1.改变摘录的长度

摘录是您可以看到的一小段帖子在这种情况下,WordPress 默认将摘录设置为 55 个单词。但是,WordPress 允许我们通过过滤器自定义默认长度excerpt_length,如下所示。

1个
2个
3个
4个
function my_excerpt_length( $length ) {
   return 30;
}
add_filter( 'excerpt_length', 'my_excerpt_length', 999 );

返回值是指将显示为摘录的单词总和。在上面的示例中,我们在摘录中显示每篇文章的 30 个单词。

2.减少后期修订

WordPress 让作家和博主回顾他们作品的以前版本。但是,随着修订数量的增加,它们也可能会影响网站的性能,因为每个新记录的修订都会向数据库中添加一个新行。随着时间的推移,这个问题只会变得更糟。

要解决此问题,您可以设置要在数据库中保存多少修订。为此,请打开您的wp-config.php并在下面添加此代码段。更改数字以限制要保存的修订数。

1个
define('WP_POST_REVISIONS', 5);

如果您想禁用 WordPress 修订版,请将值切换为FALSE如下所示:

1个
define('WP_POST_REVISIONS', false);

3.自动在帖子上设置特色图片

通常的做法是显示代表或描述帖子的特色图片。WordPress 要求我们手动设置此特色图片为了使这个过程更有效率,我们可以通过将帖子中的第一张图片设为特色图片来自动设置特色图片。使用以下代码片段。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
function autoset_featured() {
    global $post;
    $already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb)  {
    $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
      if ($attached_image) {
            foreach ($attached_image as $attachment_id => $attachment) {
              set_post_thumbnail($post->ID, $attachment_id);
            }
        }
     }
}
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

4.强制最小评论长度

不喜欢 1-2 个词的评论,如“好帖子!”、“干得好!”?尽管评论可能不是垃圾邮件,但这些评论通常不会鼓励进一步讨论。如果你想让你的评论者说话,你可以设置在读者发表评论之前所需的最小字数。

以下是设置评论的最少字符数或单词数的代码段。把它放在functions.php中。

1个
2个
3个
4个
5个
6个
7
8个
function minimal_comment_length( $commentdata ) {
    $minimalCommentLength = 20;
    if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ){
      wp_die( 'All comments must be at least ' . $minimalCommentLength . ' characters long.' );
  }
  return $commentdata;
}
add_filter( 'preprocess_comment', 'minimal_comment_length' );

$minimalCommentLengthvalue 是所需的最少字符数,对此值进行更改以调整它。

5.禁用来自用户评论的链接

评论表中包含的链接一旦发布并获得批准,将立即成为可点击的链接。这可以被垃圾邮件发送者利用,鼓励他们用指向他们的“垃圾邮件”页面的链接淹没您的评论部分。

为了解决这个问题,您可以添加此过滤器以禁用链接的点击能力并将它们保留为纯文本。

1个
remove_filter('comment_text', 'make_clickable', 9);

6. 从自定义菜单中删除类和 ID

如果你查看 WordPress 中的自定义菜单,你会发现每个菜单项上都有一堆类和 ID。使用下面的代码片段删除不需要的类并保留需要的类。

1个
2个
3个
4个
5个
6个
function my_css_attributes_filter($var) {
  return is_array($var) ? array_intersect($var, array('current-menu-item')) : '';
}
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);

在上面的代码中,我们保留了current-menu-item类。

7. 从搜索中排除页面

在 WordPress 中进行搜索将从页面和帖子中提取结果,有时与您的搜索查询没有太大关系。为防止这种情况,您可以过滤搜索结果以仅显示在帖子中找到的结果。将此代码段添加到function.php以执行此操作。

1个
2个
3个
4个
5个
6个
7
function SearchFilter($query) {
  if ($query->is_search) {
    $query->set('post_type', 'post');
  }
  return $query;
}
add_filter('pre_get_posts','SearchFilter');

8.替换你好文本

厌倦了“你好”的文字?如果您想将其更改为您网站上的特殊称呼,只需将其添加到 functions.php,效果将立即生效。

1个
2个
3个
4个
5个
6个
function change_howdy($translated, $text, $domain) {
  if (false !== strpos($translated, 'Howdy'))
  return str_replace('Howdy', 'Hello', $translated);
  return $translated;
}
add_filter('gettext', 'change_howdy', 10, 3);

9. 为特定角色添加额外的菜单删除

您可以使用此代码段为非管理员隐藏仪表板中的菜单。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
function remove_admin_menus(){
  if(is_user_logged_in() && !current_user_can('administrator')){
    remove_menu_page( 'index.php' );                  //Dashboard
    remove_menu_page( 'edit.php' );                   //Posts
    remove_menu_page( 'upload.php' );                 //Media
    remove_menu_page( 'edit.php?post_type=page' );    //Pages
    remove_menu_page( 'edit-comments.php' );          //Comments
    remove_menu_page( 'themes.php' );                 //Appearance
    remove_menu_page( 'plugins.php' );                //Plugins
    remove_menu_page( 'users.php' );                  //Users
    remove_menu_page( 'tools.php' );                  //Tools
    remove_menu_page( 'options-general.php' );        //Settings
  }
}
add_action('admin_init', 'remove_admin_menus');

请注意,这只是从屏幕上删除菜单,但不会过滤用户访问这些菜单的权限。它不会阻止用户直接通过浏览器地址栏访问这些菜单。请记住将它们添加到您的functions.php中。

10. 删除非管理员的管理栏链接

在 WordPress 仪表板中,除了侧边栏上的主菜单外,您还会在顶部找到几个菜单链接。您可以限制特定角色或用户访问此管理栏链接。下面的这段代码将为非管理员用户删除管理栏中的菜单——相应地进行调整。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
function remove_admin_bar_links() {
  global $wp_admin_bar;
  if (!current_user_can('administrator')) {
    $wp_admin_bar->remove_menu('wp-logo');          // Remove the WordPress logo
    $wp_admin_bar->remove_menu('about');            // Remove the about WordPress link
    $wp_admin_bar->remove_menu('wporg');            // Remove the WordPress.org link
    $wp_admin_bar->remove_menu('documentation');    // Remove the WordPress documentation link
    $wp_admin_bar->remove_menu('support-forums');   // Remove the support forums link
    $wp_admin_bar->remove_menu('feedback');         // Remove the feedback link
    $wp_admin_bar->remove_menu('site-name');        // Remove the site name link
    $wp_admin_bar->remove_menu('view-site');        // Remove the visit site link
    $wp_admin_bar->remove_menu('updates');          // Remove the updates link
    $wp_admin_bar->remove_menu('comments');         // Remove the comments link
    $wp_admin_bar->remove_menu('new-content');      // Remove the new content link
    $wp_admin_bar->remove_menu('my-account');       // Remove the user details tab
  }
}
add_action('wp_before_admin_bar_render', 'remove_admin_bar_links');
标签: