0

こんにちは、投稿の内容とその他の情報を変更する関数を作成しています。ただし、これを行っている間、サイトが読み込まれず、500 内部サーバー エラーがスローされます。フックに使用したコードは次のとおりです。

add_filter("the_content","add_related_pics",1);

function add_related_pics($content){
    $pics = "";
    $pics.= '<ul>';
    $tag = get_post_meta(get_the_ID(), 'highlight-tag', true);
    $original_query = $wp_query;
    $wp_query = null;
    $args=array('posts_per_page'=>5, 'tag' => $tag,'orderby' => 'rand');
    $wp_query = new WP_Query( $args );
    if ( have_posts() ) :
        while (have_posts()) : the_post();
            $pics.= '<li>';
        preg_match('@<img.+src="(.*)".*>@Uims', get_the_content(), $matches);
        $src = $matches[1];
            $pics.='<a href="'.get_permalink().'"><img src="'.$src.'" height="50" width="50"  /></a>';
        $pics.= '</li>';
        endwhile;
    endif;
    $wp_query = null;
    $wp_query = $original_query;
    wp_reset_postdata();
    $pics.='</ul>';
    return $content.$pics;  
}

このコードの何が問題なのか誰でも指摘できますか?

4

1 に答える 1

0

オブジェクトを使用していないwp_queryため、エラーが発生します。

それをコードに追加すると、うまくいくはずです。

   if ( $wp_query->have_posts()  ) :
    while ( $wp_query->have_posts() ) :
    $wp_query->the_post();
        $pics.= '<li>';
    preg_match('@<img.+src="(.*)".*>@Uims', get_the_content(), $matches);
    $src = $matches[1];
        $pics.='<a href="'.get_permalink().'"><img src="'.$src.'" height="50" width="50"  /></a>';
    $pics.= '</li>';
    endwhile;
    endif;

使用しない限り、変数をそれ$orignal_queryにリセットする必要はありません。wp_query

したがって、どちらの場合も次のコードを削除してください。

$original_query = $wp_query;
$wp_query = null;
于 2013-03-16T13:05:12.003 に答える