【问题标题】:Dynamic Image Links Depending on Excerpt/'Single Post' View in Wordpress动态图像链接取决于 Wordpress 中的摘录/“单篇文章”视图
【发布时间】:2011-10-02 01:18:30
【问题描述】:

我正在开发一个新的 Wordpress 主题;默认索引视图显示最近帖子的摘录。一些帖子将与文件下载有关,并包含图像、描述和指向所描述文件所在位置的链接。这些类型的帖子的图像将通过链接锚定(其他类型的帖子可能包含未链接的图像)。

对于这些类型的帖子,我希望图像在以摘录形式显示时链接到其条目的完整帖子视图(single.php),但对于相同的图像在显示为部分时链接到外部下载链接完整的帖子视图。

我不确定我将如何做到这一点。 任何帮助将不胜感激!

【问题讨论】:

    标签: image wordpress dynamic-links


    【解决方案1】:

    因为我没有定义帖子缩略图,并且帖子可能包含也可能不包含多个图像,所以我最终这样做了:

    我关闭了摘录中的标签(我有一个摘录插件启用了摘录中的标签),然后我在 function.php 文件中添加了以下内容:

    function catch_that_image() {  
        global $post, $posts;  
    
        $first_img = '';  ob_start();  
        ob_end_clean();  
    
        $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', 
    
    
        $post->post_content, $matches);  
    
        $first_img = $matches [1] [0];  
        if(empty($first_img)){ 
        //Defines a default image    
        $first_img = "/images/default.jpg";  }  
        return $first_img;}
    

    然后我在帖子标题和摘录/内容之间的主索引模板文件中添加了以下内容:

    <p><a href="<?php the_permalink() ?>" alt="<?php _e('Read full article', 'theme');?>" title="<?php _e('Read full article', 'theme');?>"><img src="<?php echo catch_that_image() ?>"></a></p>    
    

    随机说明:它被包裹在一个

    出于样式原因。

    再次感谢您指引我正确的方向。

    【讨论】:

      【解决方案2】:

      如果您的主题在首页使用“the_excerpt()”,我认为您可以在functions.php 中添加一个过滤器,并使用正则表达式将链接href 从下载链接更改为永久链接。

      类似的,

      function replace_link($content) {
         if (is_home())
            return preg_replace('regular_expression', get_permalink(), $content);
         else
            return $content;
      }
      add_filter('the_excerpt', 'replace_link');
      

      如果不知道您的下载链接是什么样的,我无法创建实际的正则表达式

      【讨论】:

      • 指向外部 url 的链接指向托管文件的另一个页面,而不是直接指向实际文件。
      • 我正在使用'Advanced Excerpt'插件,我会在functions.php中添加那个php,还是需要编辑插件文件?只是要求完全确定。谢谢顺便说一句!
      • @Jayhal,链接指向的位置无关紧要;只要你能识别它,你就可以用给定的代码来改变它。我想你可以把它放到functions.php中,但我不熟悉你正在使用的插件。不客气......帮我一个忙并投票给我的答案。 :)
      • 我查看了插件。它使用“get_the_excerpt”钩子。我提供的 sn-p 使用了 'the_excerpt' 钩子,它在 'get_the_excerpt' 之后执行。我想这就是你想要的
      • 哦,抱歉!大声笑,我清楚地记得点击检查,我的错误。再次感谢。 :)
      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多