我在一个客户的Wordpress网站上工作。该网站有一个自定义的主页。每周六,我的客户都会用新内容填充主页,这样旧内容就会被删除,新内容就会被取代。所以主页一周只更新一次。
现在,我的客户希望能够在一周内用新内容逐步填充页面,并预览更改(而不是常规访问者看到更新的内容),并计划在周六用新内容更新主页,让每个人都能看到。
有没有办法,在周六主页重新填充新内容后,像我的客户这样的登录用户能够看到页面的动态版本,并预览他们在一周内对页面所做的更改,从而“冻结”页面并为常规访问者提供静态HTML。然后在下个星期六用新的内容自动“刷新”页面,然后再次“冻结”它?
登台/版本控制环境在这里可能有些夸张,因为它只针对一个页面(主页),而且我认为我的客户,一个非技术人员,不能很好地管理登台。缓存插件可能也不会起作用,因为据我所知,如果用户清除了浏览器中的缓存,它将显示所有他们不希望看到的新内容……
任何帮助都将不胜感激!谢谢!
发布于 2012-12-03 15:20:24
我建议您使用Transients API。因此,在您的主页模板上,您将首先查看访问者是否已登录。如果他们已登录,您将显示主页的实际内容。如果它们不是,您将获得瞬态( get_transient() ),如果它仍然是活动的(它不返回false),您将显示它。如果返回false,则执行ob_start(),显示主页的实际内容,然后执行$contents = ob_get_clean();,使用set_transient()和echo $contents;更新瞬态。
除此之外,您还可以将操作添加到init、template_redirect或任何其他您喜欢的钩子中(只要它在每次页面加载时触发)。在那里,你必须检查是否是时候显示主页的新内容了。如果是,则使用delete_transient()删除瞬态,这样您的主页就会更新。
我现在没有时间给你一个代码示例,但我认为你应该能够弄清楚代码。
发布于 2012-12-03 15:59:32
我会使用“未来”的帖子状态..
WordPress有“安排”帖子的能力。所以你告诉你的客户“安排”在他想要的某一天发布这篇文章,在他整个星期里。
然后,你有很多方法来确保只有一个组可以看到他们,例如,admins -通过使用一些conditions,比如:
if (is_admin()) {
}现在,正如我所说的,通过过滤查询、添加新查询、添加multiple loops等等,有很多种方法可以实现这一点。
例如:
if (is_admin()) { // if we are admin - or any other conditional wanted
// start a new query
$my_query = new WP_Query('post_status=future');
while ($my_query->have_posts()) : $my_query->the_post();
//do the thing
wp_reset_postdata();
// start the normal query ...
}另一种方法是在循环中正常使用get_post_status()
$status = get_post_status();
if ($status == 'future') && (is_admin()) {
//display post as you would
}
// continue normal query / post display here ..因此,通过这种方式,页面对于“普通”用户将正常工作-直到更新日期,但将显示管理员(或登录,或特定用户,或任何你想要的条件)的预定帖子。
更新I:根据评论提供的概念证明:
警告:丑陋的低效代码。概念演示..
while ( have_posts() ) : the_post();
// start here
$future_q = new WP_Query( 'post_status=future' );
while ( $future_q->have_posts() ) : $future_q->the_post();
if (current_user_can( 'administrator' ) == TRUE ){
the_title();}
endwhile;
wp_reset_postdata();
echo 'Normal start here :';
the_title();上面的代码适用于我的设置。诚然,这是丑陋的代码,效率不高,也不是最好的方法,但这是一个概念证明,可以使用futurepost状态来做OP要求的事情。您可以通过修改和过滤查询变量、修改和过滤查询变量、更改循环或检查循环内的循环状态,甚至使用get_posts()将此概念付诸实践-所有这些操作都具有您想要的任何条件。
https://stackoverflow.com/questions/13676948
复制相似问题