如何从主页2111子主题中删除博客条目?

时间:2013-01-07 作者:Joe

我一直在努力解决这个问题有一段时间了。我已经阅读了有关创建单独主页和帖子页面等的文档,并且我已经成功创建了登录页和博客。

但我希望登陆/主页是一个带有播放器的专用音乐页面,而且我似乎无法摆脱登陆页面上的博客帖子。我已经读了足够多的书,知道它与PHP和循环有关,但我不知道从哪里开始,因为我不知道从哪里找到我需要的东西来分隔页面。

2 个回复
SO网友:bosco

在最基本的层面上,您可以通过简单地从显示“登录页”的模板中删除循环来阻止显示所有帖子如果你只想modify 显示在“登录页”上的帖子(例如,如果您将Wordpress post对象用作歌曲并尝试显示歌曲集),则应使用[pre_get_posts][1] 改为操作。使用这个钩子修改查询超出了我的解决方案的范围,但我提供了一个使用钩子防止帖子显示在页面下方的示例。

WARNING: 直接更改第三方主题可能很危险,因为如果有人决定将主题更新为原始主题作者提供的新版本,下载的新文件将覆盖用户所做的任何更改。为了解决这个问题,Wordpress使用了一个名为child themes,“它允许您指定一个预先存在的主题作为子主题的“基础”,并根据其进行排序。我强烈建议您在开始进行修改之前创建一个子主题或复制211,并在下面的步骤#1中详细介绍了该过程,Removing the Loop via Template Modifications 在下面

正在删除循环

通过模板修改删除循环,因此我们开始了创建/修改模板文件的旅程。由于我不知道你知道什么,也不知道到目前为止你做了什么,我已经写了相当一般的说明,希望能看到你朝着完成任务更近一些。

无论如何,从顶部:

创建一个新主题(此后称为居住在wp-content/themes/mythemename) 如果您尚未这样做,请执行以下操作之一:

a) 正在复制twentyeleven 目录位于/wp-content/themes 并对其进行重命名,另外更新mythemename/style.css (顶部封闭在/* ... */). 至少指定主题的Theme Name 参数在这种情况下,您也应该离开Text Domain 设置为twentyeleven.

b) 创建child theme Wordpress的2011主题。为此,请在中创建一个新目录wp-content/themes 并在其中创建style.css 包含一个标头的文件,该标头指定(至少)一个Theme Name 参数此外,在位于mythemename/style.css, 设置参数Templatetwentyeleven - 这告诉Wordpress使用211作为子主题的基础。在结束时*/ 在主题标题中添加行,@import url("../twentyeleven/style.css");- 这将把所有的211的CSS都引入到你的新主题中。对主题CSS的任何修改都应该在这条新线下进行。

有关主题开发的详细信息,请参阅the codex page on the subject.

下一步是参考Template Hierarchy 要了解Wordpress试图加载哪个页面模板作为“登录页”遵循路径(“What Page?“>”Site Front Page)在其各个终端的图表上,我们可以看到有许多选项可用:

a) 创造wp-content/themes/front-page.php, 在考虑博客的“阅读”设置之前,Wordpress将加载哪些内容。NOTE: “二十一”主题没有定义此文件。

b) 创造wp-content/themes/home.php, 如果否,将加载哪个Wordpressfront-page.php 模板可用,博客的“阅读”设置设置为在主页上显示帖子。

c) 创造wp-content/themes/page-{PageSlug}.php (更换{PageSlug} 如果没有,Wordpress将加载哪个页面front-page.php 模板可用,博客的“阅读”设置被设置为显示静态首页,这表明静态首页具有{PageSlug}.

d) 创造wp-content/themes/{CustomTemplateName}.php 并利用custom page templates, 这超出了我的解决方案的范围。

作为新模板文件的基础(无论您在接下来的步骤2中创建了什么文件),请随意复制wp-content/themes/twentyeleven/index.php. 在与您的特定问题实际相关的第一个操作中,您可以删除页面上显示的任何和所有帖子,只需删除整个循环,即删除(包括)之间的所有内容if( have_posts() )endif;.

通过pre_get_posts 行动

The action 在Wordpress查询帖子之前立即执行。通过测试是否显示的是首页,我们可以有条件地丢弃查询,这样它就不会返回任何帖子供循环显示(您可能会得到一条详细说明没有帖子的消息)。将以下内容放入主题functions.php 文件(wp-content/themes/mythemename/functions.php 如果您碰巧遵循了上一节中的步骤#1):

function prevent_frontpage_posts( $query ) {
    if( ( is_front_page() || is_home() ) && $query->is_main_query() )
        $query->init();    //If processing the main query on the main page, reset it.
        //HACK: Modify the query to search for something bogus to ensure that the default values don\'t provide a result set.
        $query->set( \'post_type\', \'dummyPostType\' );
}
add_action( \'pre_get_posts\', \'prevent_frontpage_posts\' );
希望这有帮助。感谢您让我使用您的问题来更加熟悉StackExchange标记;)

SO网友:WP Themes

您是否尝试过为主页创建WordPress页面,并为博客帖子创建单独的WordPress页面?

然后进入设置->阅读页面。

在“首页显示”选项中选择“静态页面”选项

结束

相关推荐

如何将图片放入Header.php?

我正在尝试定制“二十十”主题这是标题的一部分。php:<body <?php body_class(); ?>> <div id=\"wrapper\" class=\"hfeed\"> <div id=\"header\"> <img id=\"topL\" src=\"images/img01.png\"/> //this img I cannot insert ! <