仅在长帖子上显示小工具(超过X个字符)

时间:2013-05-15 作者:Paul Thomson

我希望只在长度超过X个字符的帖子上显示标准的wordpress小部件(或者可以粗略计算帖子高度的另一种方法)

我希望在我的网站帖子边栏中加入一些额外的广告,这些帖子很长,因此边栏空间很空。在较短的帖子上,没有必要显示这个较大的附加广告,否则侧边栏将比主要内容正文长,并导致布局问题。

有人知道实现这一目标的最佳解决方案吗?

我理解这可能不是一个常见的问题,但如果这是一个足够简单的解决方案,那么在站点上实施它可能是值得的。感谢所有能提供帮助的人。

4 个回复
SO网友:fuxia

使用function t5_word_count() from this answer 并扩展该方法widget() 在widget类中:

public function widget( $args, $instance )
{
    if ( ! is_singular() )
        return;

    $content = get_the_content( \'\', TRUE );
    $words   = t5_word_count( $content );

    if ( 50 > $words )
        return;

    // print you widget
}

SO网友:Alec Hanson

Widget上下文允许将此作为标准。您可以选择仅在大于或小于设定字数的页面上显示!

SO网友:webdwall

用一些javascript来做怎么样?我可以想出一个办法:

1) 已经向侧栏添加了其他小部件,并使用css将其隐藏

2) 在页面加载时,使用一些jquery计算帖子的有效高度(主要内容区域)。这还将考虑图像,而不仅仅是文字。

3) 比较主内容和侧栏的高度,可以设置这些额外的小部件

但这种方法会有一个问题,这些小部件,即使没有显示,也会在页面加载时加载,所以额外的html等等。。。为了避免在页面加载之后,如果要显示额外的小部件,可以使用ajax加载这些小部件内容。但这样的话,我不确定所有的小部件都可以通过ajax获取。但可以肯定的是,广告可以。。

有意义吗?

SO网友:infrcl

这个Widget Logic 插件可以过滤任何小部件的内容。

您可以使用字数隐藏小部件Count the words.

    function hide_widget_if_long_post($content=\'\' , $widget_id=\'\')
    {
       if (t5_word_count(get_the_content()) <= your_limit && $widget_id == "your-widget-id-1" ) {
            return \'\';
       }
       return $content;
    }

    add_filter(\'widget_content\', \'hide_widget_if_long_post\',10,2);

结束

相关推荐

NEXT_POSTS_LINK返回第一页的相同内容

分页似乎工作正常。。。我有21个帖子。。。它将转到3页。。。然而每页显示10篇帖子,内容与第一页相同。。。。<?php $temp = $wp_query; $wp_query= null; $args = array( \'post_type\' => \'a-reports\', \'post_status\' => \'publish\' ); $wp_query = new WP_Query( $a