更改读取设置的管理员默认设置

时间:2014-04-01 作者:Sam

我定制了索引。php显示6篇文章:

<?php
// Get header
get_header(); ?>

<div id="primary">
<?php // Begin paginate and loop
  $temp = $wp_query; 
  $wp_query = null; 
  $wp_query = new WP_Query(); 
  $wp_query->query(\'showposts=6\'.\'&paged=\'.$paged); 
  if ($wp_query->have_posts()) : while ( have_posts() ) : $wp_query->the_post(); 
?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
<?php the_excerpt(); ?>
</article>

<?php endwhile; // End while ?>

<nav>
    <?php previous_posts_link(\'&laquo; Newer Posts\') ?>
    <?php next_posts_link(\'Older Posts &raquo;\') ?>
</nav>

<?php // Reset
  $wp_query = null; 
  $wp_query = $temp;  
?>

<?php else: ?>
<p><?php _e(\'Please add some posts.\'); ?></p>
<?php endif; // End loop and primary ?>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
为了正确工作,我需要将“博客页面最多显示”从10篇帖子设置为6篇。

由于我正在构建的主题将在多站点环境中使用,我想将默认阅读设置设置为6篇文章。是否可以通过功能更改默认设置。php?

我看了一下选项阅读。WordPress核心中的php。第126行显示以下内容:

<?php _e( \'Blog pages show at most\' ); ?>
如果不更新WP Admin中的设置页面,更改此值显然不会更新数据库值。

如果你能给我指出正确的方向,那就太好了。

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

您可以使用wpmu_new_blog 自动将新安装的默认值设置为6的操作:

function wpse_139900_default_posts_per_page( $blog_id ) {
    update_blog_option( $blog_id, \'posts_per_page\', 6 );
}

add_action( \'wpmu_new_blog\', \'wpse_139900_default_posts_per_page\' );
如果您不希望用户能够更改此设置,您可以替代它:

function wpse_139900_posts_per_page() {
    return 6;
}

add_filter( \'pre_option_posts_per_page\', \'wpse_139900_posts_per_page\' );
无论哪种方式,都不应该在默认循环的顶部使用自己的查询,这只是不必要的开销,可以通过调整主查询来避免。

SO网友:Pieter Goosen

这里有一个轻微的语法错误。你忘了$wp_query-> 在第二个之前have_posts()

if ($wp_query->have_posts()) : while ( have_posts() ) : $wp_query->the_post();

if ($wp_query->have_posts()) : while ( $wp_query->have_posts() ) : $wp_query->the_post();

结束