跳至正文

29 WordPress 调整以改进帖子和页面

29 WordPress 调整以改进帖子和页面

我们喜欢 WordPress——但并非所有人都准备好接受其所有默认设置和显示——尤其是帖子的显示方式。正如我们所知道的那样,独特性对网站的品牌很重要,这给访问者留下了深刻的印象,这些年来,博主和开发人员一直在努力调整帖子显示,以使其尽可能独特。

今天,我们将重点关注您可以执行的智能调整,以改善您的 WordPress 帖子显示。无论您是想更改帖子显示以增强用户体验还是增加收入或页面印象,都有一种无需插件即可实现的方法,并且此处列出的大多数代码段在大多数情况下都很容易实现,您只需要复制并粘贴提供的代码。

希望您会发现这些调整对您的项目有用,享受定制吧!

前端

1. 改变你的摘录长度

下面的调整将改变您的摘录长度,您只需将以下代码行添加到您的functions.php文件中,并将值75作为摘录长度。

1个
2个
add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($len) { return 75; }

[来源:Danny van Kooten]

2. Twitter 风格的“很久以前”的日期

大多数人不知道 WordPress 具有使用“Time Ago”格式显示日期的内置功能,下面的代码片段可以粘贴到循环内的任何位置以使用该格式显示日期。

1个
Posted <?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago';

[来源:PHP 片段]

3. 在您的 RSS 提要中显示帖子缩略图

在 WordPress 2.9 中引入,该the_post_thumbnail()功能对于添加和显示附加到帖子的缩略图非常有用。坏消息是没有内置方法可以在 RSS 提要中显示缩略图。下面的函数将解决这个问题。只需将其粘贴到您的functions.php文件中并保存,帖子缩略图就会自动显示在您的 RSS 提要中。

1个
2个
// show post thumbnails in feeds
function diw_post_thumbnail_feeds($content) { global $post; if(has_post_thumbnail($post->ID)) {    $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;  } return $content;}add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

[来源:深入研究 WordPress ]

4. 将搜索限制为仅发布标题

您可以将此片段添加到WordPress 主题的functions.php文件中,以将搜索限制为仅发布标题。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function __search_by_title_only( $search, &$wp_query )
  {
      if ( empty($search) )
      return $search; // skip processing - no search term in query
      $q =& $wp_query->query_vars;
       
      // wp-includes/query.php line 2128 (version 3.1)
      $n = !empty($q['exact']) ? '' : '%';
      $searchand = '';
      foreach( (array) $q['search_terms'] as $term ) {
      $term = esc_sql( like_escape( $term ) );
      $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
      $searchand = ' AND ';
  }
  $term = esc_sql( like_escape( $q['s'] ) );
  if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
  $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
  if ( !empty($search) ) {
      $search = " AND ({$search}) ";
      if ( !is_user_logged_in() )
          $search .= " AND ($wpdb->posts.post_password = '') ";
      }
      return $search;
  }
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );

[来源:WpSnipp ]

5.在每个帖子上显示一个递增的数字

下面的调整将使您在每个帖子上显示一个递增的数字,并且实现起来非常简单。首先,将以下函数粘贴到您的functions.php文件中:

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
function updateNumbers() {
    global $wpdb;
    $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ";
    $pageposts = $wpdb->get_results($querystr, OBJECT);
    $counts = 0 ;
    if ($pageposts):
    foreach ($pageposts as $post):
    setup_postdata($post);
    $counts++;
    add_post_meta($post->ID, 'incr_number', $counts, true);
    update_post_meta($post->ID, 'incr_number', $counts);
    endforeach;
    endif;
}
 
add_action ( 'publish_post', 'updateNumbers' );
add_action ( 'deleted_post', 'updateNumbers' );
add_action ( 'edit_post', 'updateNumbers' );

完成后,您可以使用以下代码显示帖子编号。请注意,它必须在循环中使用。

1个
<?php echo get_post_meta($post->ID,'incr_number',true); ?>

[来源:Alchymyth来自 WpRecipes ]

6. 从 WordPress 提要中排除帖子

想要从您的 Feed 中排除某些帖子?这是给你的调整。请注意,你应该只在你想过滤的地方过滤;在我们的示例中,它在我们的 feed$wp_query->is_feed中。如果您没有那样做,过滤器也会在您的后端运行,并且这些帖子不会显示在帖子概览中。

该函数有两个参数。您为第一个参数$where提供 SQL 字符串的扩展名,它将负责基于ID的过滤。然后,在括号内,您需要插入要过滤的帖子的 ID 。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
function fb_post_exclude($where, $wp_query = NULL) {
  global $wpdb;
  if ( !$wp_query )
    global $wp_query;
  if ($wp_query->is_feed) {
    // exclude post with id 40 and 9
    $where .= " AND $wpdb->posts.ID NOT IN (40, 9)";
  }
  return $where;
  }
add_filter( 'posts_where','fb_post_exclude', 1, 2 );

[来源:WP工程师]

7.搜索查询返回单个结果时重定向到帖子

将此代码段放入 WordPress 主题的functions.php文件中,以便在 WordPress 仅返回单个搜索结果时自动将搜索重定向到该帖子。

1个
2个
3个
4个
5个
6个
7
8个
9
add_action('template_redirect', 'single_result');
function single_result() {
  if (is_search()) {
    global $wp_query;
    if ($wp_query->post_count == 1) {
      wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
    }
  }
}

[来源:WpSnipp ]

8. 从 the_content 自动创建元描述

将此片段添加到您的 WordPress 主题的functions.php文件中,将自动从您的 WordPress 帖子创建一个元描述,去除所有短代码和标签。还要确保您在WordPress 主题的header.php中拥有它,否则此代码段将无法运行。

1个
2个
3个
4个
5个
6个
7
8个
9
10
function create_meta_desc() {
  global $post;
  if (!is_single()) { return; }
  $meta = strip_tags($post->post_content);
  $meta = strip_shortcodes($post->post_content);
  $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
  $meta = substr($meta, 0, 125);
  echo "<meta name='description' content='$meta' />";
}
add_action('wp_head', 'create_meta_desc');

[来源:WpSnipp ]

9. 自动用附属链接替换单词

要自动用联盟链接替换单词,只需将下面的代码粘贴到您的functions.php文件中。请记住按照下面的示例代码所示输入您的单词/链接。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
function replace_text_wps($text){
  $replace = array(
  // 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
  'thesis' => '<a href="http://mysite.com/myafflink">thesis</a>',
  'studiopress' => '<a href="http://mysite.com/myafflink">studiopress</a>'
  );
  $text = str_replace(array_keys($replace), $replace, $text);
  return $text;
}
 
add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

[来源:catswhoblog.com ]

10. 将“阅读更多”固定链接添加到摘录的末尾

将下面的代码片段添加到您的 WordPress 主题的functions.php文件中,将在 的末尾添加一个“阅读更多”永久链接,the_excerpt这与所做的非常相似the_content

1个
2个
3个
4个
function excerpt_readmore($more) {
  return '... <a href="'. get_permalink($post->ID) . '" class="readmore">' . 'Read More' . '</a>';
}
add_filter('excerpt_more', 'excerpt_readmore');

[来源:WpSnipp ]

11. 无需插件即可显示相关帖子

安装下面的代码将使您的 WordPress 站点根据当前的帖子标签显示相关帖子。您需要将它放在single.php中,或者只是您想要显示相关帖子的任何地方。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    $tags = wp_get_post_tags($post->ID);
    if ($tags) {
      $tag_ids = array();
      foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
      $args=array(
      'tag__in' => $tag_ids,
      'post__not_in' => array($post->ID),
      'showposts'=>5, // Number of related posts that will be shown.
      'caller_get_posts'=>1
      );
    $my_query = new wp_query($args);
      if( $my_query->have_posts() ) {
        echo '<h3>Related Posts</h3><ul>';
        while ($my_query->have_posts()) {
          $my_query->the_post();
          ?>
          <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
        <?php
        }
        echo '</ul>';
      }
    }
?>

[来源:Bin-Co]

12. 在侧边栏创建你自己的热门帖子

设置侧边栏小部件以显示热门帖子非常容易。只需将下面的代码复制并粘贴到您的sidebar.php文件中。如果您需要更改显示的帖子数,您可以将第3 行末尾的5更改为您喜欢的任何数字。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
<h2>Popular Posts</h2>
<ul>
  <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
  foreach ($result as $post) {
    setup_postdata($post);
    $postid = $post->ID;
    $title = $post->post_title;
    $commentcount = $post->comment_count;
    if ($commentcount != 0) { ?>
      <li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
      <?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
  <?php } } ?>
</ul>

[来源:专业博客设计]

13. 设置过期日期/时间

下面是一个有用的代码,您可以将其放入您的WordPress 主题中,以启用基于日期和时间创建帖子过期的可能性。编辑您的主题并用这个“黑”循环替换您当前的 WordPress 循环:

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
<?php
if (have_posts()) :
  while (have_posts()) : the_post(); ?>
  $expirationtime = get_post_custom_values('expiration');
  if (is_array($expirationtime)) {
    $expirestring = implode($expirationtime);
  }
  $secondsbetween = strtotime($expirestring)-time();
  if ( $secondsbetween > 0 ) {
    // For exemple...   the_title();
    the_excerpt();
    }
  endwhile;
endif;
?>

要创建具有日期/时间到期的帖子,您只需创建一个自定义字段即可。将到期时间作为键,将日期/时间(格式:mm /dd/yyyy 00:00:00)作为值。该帖子不会在该特定时间戳后显示。

[来源:WpRecipes ]

14. 列出未来的职位

WordPress 允许列出未来的帖子,要实现此功能,只需将代码粘贴到您希望显示未来帖子的任何位置:

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
<div id="zukunft">
  <div id="zukunft_header"><p>Future events</p></div>
  <?php query_posts('showposts=10&post_status=future'); ?>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 
  <div>
    <p><strong><?php the_title(); ?></strong><?php edit_post_link('e',' (',')'); ?><br />
    <span class="datetime"><?php the_time('j. F Y'); ?></span></p>
  </div>
   
  <?php endwhile; else: ?><p>No future events scheduled.</p><?php endif; ?>
</div>

[来源:WpRecipes ]

15. 仅向搜索引擎访问者显示 AdSense

可以通过搜索引擎的结果向访问者显示 AdSense,这是实现它的代码,只需将下面的代码粘贴到主题的functions.php文件中。

1个
2个
3个
4个
5个
6个
7
8个
function scratch99_fromasearchengine(){
  $ref = $_SERVER['HTTP_REFERER'];
  $SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
  foreach ($SE as $source) {
    if (strpos($ref,$source)!==false) return true;
  }
  return false;
}

$SE数组是您指定搜索引擎的地方。您可以通过向数组添加新元素来添加新的搜索引擎,然后只需将以下代码粘贴到模板中您希望显示 AdSense 广告的任意位置,即可完成!广告只会显示给来自搜索引擎结果的访问者。

1个
2个
3个
4个
5个
if (function_exists('scratch99_fromasearchengine')) {
  if (scratch99_fromasearchengine()) {
    INSERT YOUR CODE HERE
  }
}

[来源:Scratch99来自 WpRecipes ]

后端

1. 在编辑器中允许更多的 HTML 标签

默认情况下,WordPress 编辑器不允许不符合 XHTML 1.0 标准的 HTML 标签。但是,下面显示的代码将强制编辑器接受更多标签。您可以将其粘贴到主题的functions.php文件中,保存它,函数就可以使用了。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
function fb_change_mce_options($initArray) {
  // Comma separated string od extendes tags
  // Command separated string of extended elements
  $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
  if ( isset( $initArray['extended_valid_elements'] ) ) {
  $initArray['extended_valid_elements'] .= ',' . $ext;
  } else {
    $initArray['extended_valid_elements'] = $ext;
  }
   
  // maybe; set tiny paramter verify_html
  //$initArray['verify_html'] = false;
  return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');

[来源:WP工程师]

2.设置默认编辑器

下面的代码片段修改了 WordPress 管理中的默认编辑器。您可以选择Visual Editor,也可以选择HTML Editor,只需将其中之一添加到functions.php文件中即可。

1个
2个
3个
4个
5个
# This sets the Visual Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') );
 
# This sets the HTML Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "html";') );

[来源:WP-片段]

3. 为不同的帖子类型设置不同的编辑器样式表

将以下代码粘贴到您的functions.php文件中,您可以为不同的帖子类型设置不同的编辑器样式表。您将需要根据您的帖子类型对其进行调整,并记住还要更改样式表名称

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
function my_editor_style() {
  global $current_screen;
  switch ($current_screen->post_type) {
    case 'post':
    add_editor_style('editor-style-post.css');
    break;
     
    case 'page':
    add_editor_style('editor-style-page.css');
    break;
   
    case 'portfolio':
    add_editor_style('editor-style-portfolio.css');
    break;
  }
}
add_action( 'admin_head', 'my_editor_style' );

[来源:WPStorm]

4.允许上传更多文件类型

出于某些原因,WordPress 上传器不允许您上传某些文件类型,例如 Textmate 的.tmCommand如果您需要将这些类型的文件上传到您的 WordPress 网站,这里有一个功能片段可以让您这样做,您只需将其粘贴到您的functions.php文件中。您还可以通过在第 4 行添加更多文件类型来添加它们,并以竖线 (|) 分隔。

1个
2个
3个
4个
5个
6个
7
8个
9
<?php
  function addUploadMimes($mimes) {
  $mimes = array_merge($mimes, array(
    'tmbundle|tmCommand|tmDragCommand|tmSnippet|tmLanguage|tmPreferences' => 'application/octet-stream'
  ));
  return $mimes;
   }
?>
add_filter('upload_mimes', 'addUploadMimes');

[来源:pioupioum.fr来自 WpRecipes ]

5. 为发布 the_excerpt 启用 TinyMCE 编辑器

将以下代码片段放入 WordPress 主题的functions.php文件中,会将 TinyMCE 编辑器添加到帖子摘录的文本区域。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
function tinymce_excerpt_js(){ ?>
<script type="text/javascript">
  jQuery(document).ready( tinymce_excerpt );
  function tinymce_excerpt() {
  jQuery("#excerpt").addClass("mceEditor");
  tinyMCE.execCommand("mceAddControl", false, "excerpt");
  }
</script>
<?php }
add_action( 'admin_head-post.php', 'tinymce_excerpt_js');
add_action( 'admin_head-post-new.php', 'tinymce_excerpt_js');
 
function tinymce_css(){ ?>
<style type='text/css'>
  #postexcerpt .inside{margin:0;padding:0;background:#fff;}
  #postexcerpt .inside p{padding:0px 0px 5px 10px;}
  #postexcerpt #excerpteditorcontainer { border-style: solid; padding: 0; }
</style>
<?php }
add_action( 'admin_head-post.php', 'tinymce_css');
add_action( 'admin_head-post-new.php', 'tinymce_css');

[来源:WpSnipp ]

6. 帖子格式——更有创意的主题方式

下面的语法给出了一些可能的帖子格式,然后可以在文章中直接选择和使用这些格式,您需要做的是将代码放入主题的functions.php文件中。

1个
add_theme_support( 'post-formats', array( 'aside', 'audio', 'image', 'video' ) );

[来源:WP工程师]

7. 在编辑帖子和页面概览中也显示帖子缩略图

WordPress 2.9版本引入了Post Thumbnail功能。非常棒,要在编辑帖子和页面概述中也显示帖子缩略图,您可以将以下代码放入插件或将它们复制到主题的functions.php文件中。

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
if ( !function_exists('fb_AddThumbColumn') && function_exists('add_theme_support') ) {
// for post and page
add_theme_support('post-thumbnails', array( 'post', 'page' ) );
function fb_AddThumbColumn($cols) {
  $cols['thumbnail'] = __('Thumbnail');
  return $cols;
}
 
function fb_AddThumbValue($column_name, $post_id) {
    $width = (int) 35;
    $height = (int) 35;
    if ( 'thumbnail' == $column_name ) {
        // thumbnail of WP 2.9
        $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
         
        // image from gallery
        $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
         
        if ($thumbnail_id)
            $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
        elseif ($attachments) {
            foreach ( $attachments as $attachment_id => $attachment ) {
            $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
        }
    }
  if ( isset($thumb) && $thumb ) { echo $thumb; }
  else { echo __('None'); }
  }
}
 
// for posts
add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );
add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );
 
// for pages
add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );
add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );
}

[来源:WP工程师]

8. 在管理员中创建自定义帖子状态消息

此调整最初是由开发人员编写的,作为客户端为作者创建的每个帖子显示自定义消息的一种方式。在这种情况下,帖子可能包含rejectederrorsourcefinal等消息。您可以更改代码注释正下方的消息,自定义状态消息数组,只是为了确保您也更改了类名,您可以在评论后更改它们,更改下面消息的颜色

1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48岁
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
add_filter('display_post_states', 'custom_post_state');
function custom_post_state($states) {
  global $post;
  $show_custom_state = get_post_meta($post->ID, '_status');
  if ($show_custom_state) {
    $states[] = __('<span class="custom_state ' . strtolower($show_custom_state[0]) . '">' . $show_custom_state[0] . '</span>');
  }
  return $states;
}
add_action('post_submitbox_misc_actions', 'custom_status_metabox');
 
function custom_status_metabox() {
    global $post;
    $custom = get_post_custom($post->ID);
    $status = $custom["_status"][0];
    $i = 0;
    /* ----------------------------------- */
    /*   Array of custom status messages            */
    /* ----------------------------------- */
    $custom_status = array('Spelling', 'Review', 'Errors', 'Source', 'Rejected', 'Final', );
    echo '<div class="misc-pub-section custom">';
    echo '<label>Custom status: </label><select name="status">';
    echo '<option class="default">Custom status</option>';
    echo '<option>-----------------</option>';
        for ($i = 0; $i < count($custom_status); $i++) {
        if ($status == $custom_status[$i]) {
            echo '<option value="' . $custom_status[$i] . '" selected="true">' . $custom_status[$i] . '</option>';
        } else { echo '<option value="' . $custom_status[$i] . '">' . $custom_status[$i] . '</option>'; }
    }
     
    echo '</select>';
    echo '<br /></div>';
}
add_action('save_post', 'save_status');
 
function save_status() {
    global $post;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
      return $post->ID;
    }
    update_post_meta($post->ID, "_status", $_POST["status"]);
}
add_action('admin_head', 'status_css');
 
function status_css() {
    echo '<style type="text/css">
    .default{font-weight:bold;}
    .custom{border-top:solid 1px #e5e5e5;}
    .custom_state{
    font-size:9px;
    color:#666;
    background:#e5e5e5;
    padding:3px 6px 3px 6px;
    -moz-border-radius:3px;
    }
    /* ----------------------------------- */
    /*   change color of messages below            */
    /* ----------------------------------- */
    .spelling{background:#4BC8EB;color:#fff;}
    .review{background:#CB4BEB;color:#fff;}
    .errors{background:#FF0000;color:#fff;}
    .source{background:#D7E01F;color:#333;}
    .rejected{background:#000000;color:#fff;}
    .final{background:#DE9414;color:#333;}
    </style>';
}

[来源:WpSnipp ]

9.设置最大帖子标题长度

将此 PHP 代码添加到您的 WordPress 主题的functions.php文件中将设置可以在您的帖子标题中显示的最大单词数,非常方便的调整!

1个
2个
3个
4个
5个
6个
7
function maxWord($title){
  global $post;
  $title = $post->post_title;
  if (str_word_count($title) >= 10 ) //set this to the maximum number of words
  wp_die( __('Error: your post title is over the maximum word count.') );
}
add_action('publish_post', 'maxWord');

[来源:WpSnipp ]

10. 如何更改 WordPress 编辑器字体

讨厌 WordPress 编辑器中使用的当前字体?可以更改为 Monaco 或 Consolas 等现代字体,只需将代码粘贴到 WordPress 主题的functions.php文件中即可。

1个
2个
3个
4个
5个
6个
7
8个
9
10
function change_editor_font(){
  echo "<style type='text/css'>
  #editorcontainer textarea#content {
    font-family: Monaco, Consolas, \"Andale Mono\", \"Dejavu Sans Mono\", monospace;
    font-size:14px;
    color:#333;
    }
  </style>";
}
add_action("admin_print_styles", "change_editor_font");

[来源:shailan.com,来自 WpRecipes ]

11.在帖子/页面发布时自动添加自定义字段

用于在发布时自动将自定义字段安装到页面或帖子的代码片段。您可以将下面的代码添加到位于主题文件夹内的functions.php文件中。当然,不要忘记更改自定义字段名称

1个
2个
3个
4个
5个
6个
7
8个
9
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
 
function add_custom_field_automatically($post_ID) {
  global $wpdb;
  if(!wp_is_post_revision($post_ID)) {
    add_post_meta($post_ID, 'field-name', 'custom value', true);
  }
}

[来源:wpCanyon]

12. 摆脱未使用的后期修订

这里有一个非常方便的 SQL 查询,它将立即删除所有帖子修订以及与之关联的元数据。您必须在您的 WordPress 数据库上运行以下查询,所有修订(以及与之关联的元数据)都将从您的数据库中删除。这里有一个重要说明,请务必在运行代码之前备份数据库。

删除 a、b、c
来自 wp_posts
WHERE a.post_type = 'revision'
左加入 wp_term_relationships b
ON (a.ID = b.object_id)
左加入 wp_postmeta c ON (a.ID = c.post_id);

[来源:Lesterchan.net ]

13.根据类别更改摘录长度

是否曾经希望根据您所在的类别修改摘录长度?这是实现您愿望的代码。只需将代码粘贴到您的functions.php文件中,并且不要忘记在第 3 行更改类别 ID

1个
2个
3个
4个
5个
6个
7
8个
add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
  if(in_category(14)) {
    return 13;
  } else {
  return 60;
  }
}

[来源:WpRecipes ]

14.禁用帖子自动保存

如果出于某些关键原因您想在仪表板中编辑帖子时禁用自动保存帖子的功能,这是可能的。只需打开您的functions.php文件并将以下代码粘贴到文件中:

1个
2个
3个
4个
function disableAutoSave(){
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disableAutoSave' );

[来源:WpRecipes ]

然后您可以保存文件,WordPress 永远不会自动保存帖子。您也可以通过删除代码来恢复该功能。

标签: