0

テーマの機能ページに次の機能があります。基本的には、投稿ページで画像を探し、cssでスパンを追加して、ピンタレストボタンを動的に作成します。

function insert_pinterest($content) {
global $post;

$posturl = urlencode(get_permalink()); //Get the post URL
$pinspan = '<span class="pinterest-button">';
$pinurlNew = '<a href="#" onclick="window.open(&quot;http://pinterest.com/pin/create/button/?url='.$posturl.'&amp;media=';

$pindescription = '&amp;description='.urlencode(get_the_title());
$options = '&quot;,&quot;Pinterest&quot;,&quot;scrollbars=no,menubar=no,width=600,height=380,resizable=yes,toolbar=no,location=no,status=no';
$pinfinish = '&quot;);return false;" class="pin-it"></a>';
$pinend = '</span>';
$pattern = '/<img(.*?)src="(.*?).(bmp|gif|jpeg|jpg|png)"(.*?) \/>/i';
$replacement = $pinspan.$pinurlNew.'$2.$3'.$pindescription.$options.$pinfinish.'<img$1src="$2.$3" $4 />'.$pinend;
$content = preg_replace( $pattern, $replacement, $content );

//Fix the link problem
$newpattern = '/<a(.*?)><span class="pinterest-button"><a(.*?)><\/a><img(.*?)\/><\/span><\/a>/i';
$replacement = '<span class="pinterest-button"><a$2></a><a$1><img$3\/></a></span>';

$content = preg_replace( $newpattern, $replacement, $content );
return $content;
}
add_filter( 'the_content', 'insert_pinterest' );

それはすべてうまくいきます。しかし、「noPin」のような特定のクラス名が含まれる画像をスキップする方法はありますか?

4

2 に答える 2

1

preg_replace_callbackを使用して、一致した画像にnoPinが含まれているかどうかを確認します。

function skipNoPin($matches){
    if ( strpos($matches[0], "noPin") === false){
        return $pinspan.$pinurlNew.'$matches[2].$matches[3]'.$pindescription.$options.$pinfinish.'<img$1src="$2.$3" $4 />'.$pinend;
    } else {
        return $matches[0]

$content = preg_replace_callback( 
    $pattern, 
    skipNoPin,
    $content );

別の画像属性にnoPinが含まれている可能性があります。そのエッジケースが心配な場合は、ifステートメントでテストをより具体的にしてください。

于 2012-11-28T22:21:43.870 に答える
0

クラスnoPinを$pattern正規表現から除外する必要があります:

$pattern = '/<img(.*?)src="(.*?).(bmp|gif|jpeg|jpg|png)"(.*?) \/>/i';

次のようなものになる必要があります

$pattern = '/<img(.*?)src="(.*?).(bmp|gif|jpeg|jpg|png)"(.*?) (?!class="noPin") \/>/i';

class="noPin"正規表現の構文を確認してください。ただし、検索パターンから除外することをお勧めします。その場合、置換はこれらの画像に追加されません。

于 2012-11-28T22:04:06.507 に答える