3

我正在尝试允许用户(使用 Wordpress)插入基于人造标签的 jquery 幻灯片库( http://www.queness.com/resources/html/slideshow/jquery-slideshow.html )。例如:

[slideshow]
    <img src="url" /><br />
    <img src="url" />
[!slideshow]

会产生类似的东西

<div id="gallery">
     <a href="#"><img src="url" /></a><br />
     <a href="#"><img src="url" /></a><br />
</div>

我认为我遇到问题的地方是 jquery 代码要求 img 用锚标记括起来。这就是我所拥有的,但感谢 Wordpress,代码上方或下方的任何内容都没有正确格式化。我使用了 Wordpress 格式化功能,但它将每一行都包含在一个段落标签中,所以它只会破坏所有内容。

function make_slideshow($string) {

 $patterns[0] = '/(\[\[slideshow\]\])/';
 $patterns[1] = '/(\[\[\!slideshow\]\])/';
 $replacements[0] = '<div id="gallery">';
 $replacements[1] = '<div class="caption"><div class="content"></div></div></div>';
 $replace = preg_replace($patterns, $replacements, $string);

 $new_line = explode("\n", $replace);

 foreach($new_line as $key => $value) {
  if($value == "" || $value == " " || is_null($value)) {
   unset($new_line[$key]);
  }
 }

 $sorted_lines = array_values($new_line);

 foreach($sorted_lines as $key => $value){
  if( (stristr($value, 'href') === FALSE) && (stristr($value, 'img') !== FALSE) ){
   $sorted_lines[$key] = '<a href="#">' . $value . '</a>';
  }

  if( (stristr($value, 'show') === FALSE) && ($key === 1) ){
   $value = explode(" ", $value);
   $value[0] .= ' class="show"';
   $sorted_lines[$key] = implode(" ", $value);
  }

 }

返回 $sorted_lines;

};

通常我会在 SO 上找到所有其他答案,所以这只是我的第一个问题。我不知道其他人试图帮助我解决这个问题是否太大了,但我被困住了,所以我想我会试一试。

4

3 回答 3

2

Wordpress 在编辑器中自动添加 p 标签;你需要阻止 WP 这样做。根据我的经验,您可以删除编辑器中的所有换行符 - 压缩代码 - 或使用一些插件来阻止 WP 添加格式:TinyMCE Advanced和/或Disable wpautop

于 2009-09-30T20:46:58.340 回答
0

什么 WordPress 功能正在调用您的例程?

我遇到了类似的问题:

<?php wp_list_pages( $args ); ?> 

正在添加<ul>指向我想要压制的所有内容的链接..

检查 WP 开发文档中的例程,该例程比您的例程高一级,我敢打赌会有一个$arg值来抑制<p>标签。

http://codex.wordpress.org/Function_Reference

于 2009-11-20T10:19:15.937 回答
0

该代码中没有任何内容添加 ap 标签。如果这是问题所在,您需要找到将 p 添加为包装器的真实代码。

于 2009-09-30T18:50:50.373 回答