2

SVN とフォルダーの置き換えを介して、wordpress の上に WordPress を何度もインストールしました...データベースは常に同じままでした。wp survey および quiz toolからの次のコードを使用すると、SVN からの新しいコピーが 2 つの異なるマシンで突然機能しなくなります。

function wpsqt_main_site_quiz_page($atts) {

    extract( shortcode_atts( array(
                    'name' => false
    ), $atts) );

    if ( !$name ){
        require_once WPSQT_DIR.'/pages/general/error.php';
    }

    require_once WPSQT_DIR.'/includes/site/quiz.php';
    ob_start();
    wpsqt_site_quiz_show($name);
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

add_shortcode( 'wpsqt_page' , 'wpsqt_main_site_quiz_page' );// Deprecated and will be removed
add_shortcode( 'wpsqt_quiz' , 'wpsqt_main_site_quiz_page' );

コードに到達した場所を確認するために使用echoすると、 add_shotcode に到達していますが、関数内には到達していません。ページには次のように表示されます。

[wpsqt_quiz name="test"]

期待されるquiz.php.

データベースを削除したところ、wordpress とプラグインが新しくインストールされ、もちろんすべて正常に機能しました。それほど変更されていない SVN バージョン (1 つのプラグイン - Magic Fields - とカスタマイズされたテーマが含まれているだけ) を取得した場合、プラグインを削除して再度インストールしても、まだ機能しません!

ここで何がうまくいかないのでしょうか?add_shortcode を機能させるために必要なものは何ですか?

4

1 に答える 1

1

その問題は昨日から私を悩ませていました。最終的に、(今)明らかにカスタマイズされたテンプレートで理由を見つけました。

ヘッダーには への呼び出しが含まれていましたquery_posts。これは、ページの読み込みごとに 1 回しか呼び出せないと思われます。それから救助wp_reset_queryに来ます。ちょっと待って!これらの関数は両方とも非推奨のようで、どちらも使用しないでください! 代わりに、常にWP_query objectを使用する必要があります。

したがって、これは機能しますが、間違っています:

<?php query_posts('showposts=10'); ?>  
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>  
   <li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>  
<?php endwhile; endif; ?>  
<?php wp_reset_query(); ?>  

そして、これは正しく適切な方法です:

<?php $r = new WP_Query(array('showposts' => '10', 'what_to_show' => 'posts', 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1)); ?>  
<?php if ($r->have_posts()) : while ($r->have_posts()) : $r->the_post(); ?>  
   <li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>    
<?php endwhile; endif; ?> 

それがないと、ページ自体の後続の query_posts が適切にロードされないため、[wpsqt_quiz name="test"]それらの内部 (ページ投稿内) が呼び出されることはありません。

また、[wpsqt_quiz name="test"]テンプレートページに追加できないようです。

それで全部です。

于 2011-02-16T23:09:54.393 に答える