删除带有条件标记的某些帖子的作者和日期

时间:2010-11-11 00:05:18

标签: php wordpress

我想删除分配给我刚刚开始的网站的特定类别的帖子的作者和日期。我认为以下添加到我的自定义主题的function.PHP文件就可以了。该类别的名称是“基金”,对于未分配此类别的所有其他帖子,我希望保留作者和日期信息。

if (is_category('Funds')) {
    remove_action('genesis_before_post_content', 'genesis_post_info');
}

此代码似乎对网站没有影响,所有帖子都会继续显示作者和日期信息。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

尝试此操作,但将“推荐”替换为“基金”。注意我还定制了从帖子信息返回到不显示任何帖子类别的作者等。以下代码将有效删除任何具有“推荐”类别的帖子的发布日期,以及其他任何帖子类别的发布日期。

/** Customize the post info function */
add_filter( 'genesis_post_info', 'post_info_filter' );
function post_info_filter($post_info) {
    if (!is_category('Testimonials')) {
        $post_info = '[post_date]'; // removed by [post_author_posts_link] at [post_time] [post_comments] [post_edit]
    return $post_info;
}}

以上代码放在您的子主题functions.php

答案 1 :(得分:1)

如果您将代码 as-is 放入主题的functions.php文件中,它会过早运行; “query”将无法运行,因此WordPress还不知道您的类别。您需要从查询后运行的钩子运行代码。

假设 'genesis_post_info'实际上是你需要的钩子,那么这段代码可能为你工作(我没有Genesis到测试以确定。)是的,您可以将此代码放入主题的functions.php文件,因为它会延迟运行删除直到the_posts挂钩后:

add_filter('init','yoursite_the_posts');
function yoursite_the_posts($posts) {// 'the_posts' runs immediately after the query
  if ($wp_the_query === $wp_query && // If first query on a page load
      is_category('Funds')) {        // And if this is the Funds category
    remove_action('genesis_before_post_content', 'genesis_post_info');
  return $posts;                     // Gotta return the posts, they are expected
}

让我知道这是否有效,或者不管你遇到什么问题。

更好的替代? “基金”的自定义帖子类型

您是否考虑过将Custom Post Types用于基金,而不是将其用于邮寄?我猜你会得到更好的结果。

如果您使用自定义帖子类型,那么这些可能会帮助您主题化:

希望这有帮助。

-Mike

答案 2 :(得分:0)

首先,上面的答案对我非常有帮助,但后来我意识到对这个问题的解释可能有些偏差。所以我的答案实际上是'我'正在寻找的解决方案,但根据问题的原始意图也可能是Hamish所寻求的。

问题似乎在于是否删除“在类别中”的帖子上的作者和日期,而不是在类别的存档列表中列出的帖子。

例如,我希望(略有不同)只删除日期(不是作者)但我想在该帖子的单个帖子视图中删除日期,只要它恰好位于一个名为案例研究的类别中。所以我用了

/** Customize the post info function */
add_filter( 'genesis_post_info', 'post_info_filter' );
function post_info_filter($post_info) {
if ( in_category('case-studies') ) {
    $post_info = 'By [post_author] [post_edit]'; // removed by [post_author_posts_link] at [post_time] [post_comments] [post_edit]
       return $post_info; 
    }
        else {
        $post_info = '[post_date] By [post_author]  [post_edit]'; // removed by [post_author_posts_link] at [post_time] [post_comments] [post_edit]
           return $post_info;
        }

注意我使用的是in_category而不是is_category:)

有可能Hamish实际上想要一个混合,其中类别页面上所有帖子的存档列表都不显示作者和日期,并且碰巧在相关类别中的各个帖子不显示作者和日期。

在这种情况下,上面的代码需要更复杂才能处理这两种情况。

简单修改冲突 如果您正在运行Genesis Simple Edits插件,那么该插件也将在上述函数之后打败(运行)。我还没想出自己在简单编辑之后如何/何时加入....(更新对于初学者我现在只是注释掉了这个插件的帖子信息部分,这样我就可以保持我的post_meta和页脚运行通过简单的编辑)

哦,这是通过Brian Gardner的Studio Press教程(对于这种情况来说太简单了,但可能会让Hamish开始)

http://www.briangardner.com/code/customize-post-info/