修改图库输出以在页面和帖子上以不同方式呈现

时间:2013-10-14 作者:Adrian

我仍在学习Wordpress,并慢慢变得更好,但我的技能并没有达到我所要求的改变的标准。

我需要为我的网站上的两个部分自定义库输出:1)公文包页面和2)博客帖子

在公文包页面上,我希望WP将库呈现为具有如下所示属性的图像标记。

<img width="575" height="500" src="ImagePath/ImageName.jpg" class="attachment-full" alt="Alt Text">
<img width="575" height="500" src="ImagePath/ImageName.jpg" class="attachment-full" alt="Alt Text">
<img width="575" height="500" src="ImagePath/ImageName.jpg" class="attachment-full" alt="Alt Text">
<img width="575" height="500" src="ImagePath/ImageName.jpg" class="attachment-full" alt="Alt Text">
这是我在网上找到并修改的代码。我没有完全理解$output部分,也没有信心修改它的一些代码。我不需要“gallery-item”代码,但不确定我还需要什么。我需要“itemtag”、“icontag”、“captiontag”等吗?我没有使用它们,但不确定是否可以删除它们。如果我这样做,他们会默认回核心默认值吗?

// ----------------------------------------------------------------
// GALLERY OUTPUT FOR PORTFOLIO PAGES

add_shortcode( \'gallery\', \'modified_gallery_shortcode\' );
function modified_gallery_shortcode($attr) {

if(is_page_template(\'page-portfolio.php\')){ // EDIT this slug
    $attr[\'size\']="full";
    $attr[\'link\']="none";
    $attr[\'itemtag\']="li";
    $attr[\'icontag\']="span";
    $attr[\'captiontag\']="p";

    $output = gallery_shortcode($attr);

    $output =strip_tags($output,\'<img>\');
    $output =str_replace(array(" class=\'gallery-item\'"),array(""),$output);

}else{
    $output = gallery_shortcode($attr);
}
return $output; 
}

add_filter( \'use_default_gallery_style\', \'__return_false\' );
在博客帖子中,我希望WP使用一个无序的列表来呈现库,其中的属性如下所示。

<ul class="gallery">
<li><a href=\'ImagePath/ImageName.jpg\' class="fancybox" rel="group" title=\'Title Text\'><img width="150" height="150" src="ImagePath/ImageName.jpg" class="attachment-thumbnail" alt="Alt Text"></a></li>
<li><a href=\'ImagePath/ImageName.jpg\' class="fancybox" rel="group" title=\'Title Text\'><img width="150" height="150" src="ImagePath/ImageName.jpg" class="attachment-thumbnail" alt="Alt Text"></a></li>
<li><a href=\'ImagePath/ImageName.jpg\' class="fancybox" rel="group" title=\'Title Text\'><img width="150" height="150" src="ImagePath/ImageName.jpg" class="attachment-thumbnail" alt="Alt Text"></a></li>
</ul>
我试图修改公文包页面的“图库输出”,以适应此帖子类型的格式要求,但没有任何运气!

// ----------------------------------------------------------------
// GALLERY OUTPUT FOR BLOG POSTS

add_shortcode( \'gallery2\', \'modified_gallery_shortcode2\' );
function modified_gallery_shortcode2($attr) {

if(is_page_template(\'page-portfolio.php\')){ // EDIT this slug
    $attr[\'size\']="full";
    $attr[\'link\']="file";
    $attr[\'itemtag\']="li";
    $attr[\'icontag\']="span";
    $attr[\'captiontag\']="p";

    $output = gallery_shortcode($attr);

    $output =strip_tags($output,\'NOT SURE HOW TO FORMAT\');
    $output =str_replace(array(" class=\'gallery-item\'"),array(""),$output);

}else{
    $output = gallery_shortcode($attr);
}
return $output; 
}

add_filter( \'use_default_gallery_style\', \'__return_false\' );
非常感谢您的帮助!非常感谢。

2 个回复
SO网友:jgraup

从中获取图像gallery_shortcode 在列表中,我只是按照这个例子。strip_tags 似乎去掉了你定义的所有元素,所以我a,imgli. 之后,我将html包装在ul 因此,它似乎符合您的要求。$output 只是运行后生成的字符串gallery_shortcode 之后的一切都是从绳子上取下东西。

你可以回头看看gallery_shortcode 查看是否需要/希望保留某些属性。

add_shortcode( \'gallery\', \'modified_gallery_shortcode\' );

function modified_gallery_shortcode($attr)
{
  if(is_page_template(\'page-portfolio.php\'))
  {
      $attr[\'size\']="full";
      $attr[\'link\']="none";
      $attr[\'itemtag\']="li";
      $attr[\'icontag\']="span";
      $attr[\'captiontag\']="p";

      $output = gallery_shortcode($attr);

      $output =strip_tags($output,\'<img>\');
      $output =str_replace(array(" class=\'gallery-item\'"),array(""),$output);
  }
  elseif ( \'post\' === get_post_type() )
  {
      $attr[\'size\']="full";
      $attr[\'link\']="file";
      $attr[\'itemtag\']="li";
      $attr[\'icontag\']="span";
      $attr[\'captiontag\']="p";

      $output = gallery_shortcode($attr); // generate html

      $output = strip_tags($output,\'<a><img><li>\'); // remove extra tags, but keep these
      $output = str_replace(" class=\'gallery-item\'", "", $output); // remove class attribute
      $output = "<ul class=\\"gallery\\" >$output</ul>"; // wrap in ul
  }
  else
  {
      $output = gallery_shortcode($attr);
  }

  return $output; // final html
}

add_filter( \'use_default_gallery_style\', \'__return_false\' );

SO网友:fuxia

只需使用常规的gallery短代码,并在很晚的时候替换渲染函数(回调函数)wp_head:

add_action( \'wp_head\', function() 
{
    if ( \'post\' === get_post_type() )
        return add_shortcode( \'gallery\', \'modified_gallery_shortcode2\' );

    if ( \'portfolio\' === get_post_type() )
        return add_shortcode( \'gallery\', \'modified_gallery_shortcode\' );
});

结束

相关推荐

Gallery Inside One Post

对于图像库,我需要一个使用下一个/上一个链接的代码,将您带到下一个/上一个图像in that post 和keeps the images in the correct order you chose while inserting them into the post. (每个主要新闻网站似乎都有这一功能。)当前,如果您添加<?php next_image_link( false, \'Next Image\' ); ?> 和<?php previous_image_link( fa