【问题标题】:Show/Hide Badge/Label if Post is Older Than a [Set Number of Days]如果帖子早于 [设置天数],则显示/隐藏徽章/标签
【发布时间】:2021-03-24 16:17:34
【问题描述】:

我找到了这个code

function is_old_post($days = 5) {
    $days = (int) $days;
    $offset = $days*60*60*24;
    if ( get_post_time() < date('U') - $offset )
         return true; 
    return false;
 }

if ( is_old_post(10) ) {
  // do something if the post is old
  } else {
  // do something if the post is not old
}

如果帖子是新的,我想让 .my-sweet-label 出现,如果帖子超过 30 天,我想让它消失。

我的帖子在 CPT 命名属性中。

如果我理解正确,这段代码缺少一些 jquery 来告诉 my-sweet-label 执行 magical appears / disappears

在我的示例中,我只是使用放置在卡片中的按钮,元素或其他任何东西都没有,如图所示。

2020 年 12 月 20 日更新

我没想到它会以这种方式工作,但我设法让它与一个简码系统一起工作,我把它放在我有帖子的地方

我只是注意到一个小问题,如果我将加载更多按钮放到 [posts] 上,它们会像这样显示。 奇怪的 ... 不知道这哪里可能和ajax有冲突?

/* Show / Hide badge if post is new (7 days) */
function newly_posted() {
global $post;
$now = date('U'); $published = get_the_time('U');
$new = false;
if( $now-$published  <= 7*24*60*60 ) $new = true;
return $new;
}

/* Shortcode for wordpress posts */
add_shortcode( 'new-post', function () {

if( newly_posted() ) 
    
    $out = '<p id="new-post">New</p>';
    return $out;
} );

【问题讨论】:

  • 你的 CSS 在哪里?
  • jqueryhtmlcss 我更新了我的帖子:)
  • 这与现代性无关。另一个答案的问题是,即使它的想法是合理的,它也会混淆并尝试通过 Javascript 调用 PHP 函数。可能其他回答者没有意识到 is_old_post 是一个 PHP 函数。

标签: javascript php jquery css wordpress


【解决方案1】:

您的 PHP 代码生成的内容将成为 HTML 的一部分。所以,让我们添加一个script

function is_old_post($days = 5) {
    $days = (int) $days;
    $offset = $days*60*60*24;
    if ( get_post_time() < date('U') - $offset )
         return true; 
    return false;
 }

?>

<script>
    $(function() {
        $(".my-sweet-label").<?php echo is_old_post(10) ? "hide" : "show"; ?>();
    });
</script>

因此,我们有一个在页面加载时运行的脚本,以确保您此时拥有按钮。我们通过选择器找到按钮并评估(在服务器端,在script 发送到浏览器之前)它是否旧。如果是这样,那么我们的 Javascript 将调用 hide function。否则会调用showfunction

【讨论】:

  • 谢谢 Lajos Arpad 我在 CPT 属性中创建了 10 个帖子和普通帖子 我放了 5 个帖子日期 = 今天和 5 个日期 = 30 天前,我把按钮标签放了 sn-p,但是它不起作用的按钮不会消失。我认为缺少一些东西
【解决方案2】:

没有看到您的 CSS,我无法为您的案例提供确切的示例,但您可以使用 JQuery hide()show()(假设您使用的是 JQuery)。

if ( is_old_post(10) ) {
  // hide button
   $(".yourButtonClassHere").hide();
  } else {
  // show button
  $(".yourButtonClassHere").show();
}

修改 yourButtonClassHere 以匹配按钮的类 - 请注意确保它是唯一的类,这样 JS 就不会最终隐藏页面上的其他元素。

【讨论】:

  • 这不行,is_old_post 是一个 PHP 函数,你不能在 Javascript 中这样调用它。 PHP 函数将在服务器端进行评估,在内容发送到浏览器之前,Javascript 只会在浏览器中被评估,一旦它到达那里。
  • 哦,是的,哎呀?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2013-12-01
相关资源
最近更新 更多