2011-02-16 14 views
1

私はワードプレスの上に何度も、WordPressをインストールしました。これは、SVNとフォルダを置き換えます...データベースは常に同じままです。私は、コードに到達されている場所を確認するためにechoを使用する場合は、add_shotcodeがあるwordpress add_shortcodeが機能しなくなる原因は何ですか?

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'); 

:突然、SVNから新鮮なコピーがWPの調査やクイズツールから、次のコードを持つ2台の異なるマシンで作業することはできません代わりに期待quiz.phpでそれを置き換えるので

​​

:関数の内部ではなく、ページだけでこれを表示しながら到達します。

今、私はデータベースを削除して、wordpressとプラグインを新しくインストールしました。もちろん、すべてうまくいきました。 SVNバージョンを入手した場合(これは1つのプラグイン - Magic Fieldsとカスタマイズされたテーマがあります)、プラグインを削除してもう一度インストールしてもまだ動作しません!

ここで何が間違って行くことだろうか? add_shortcodeを動作させるために必要なものは何ですか?

答えて

0

この問題は昨日から私を悩ませていました。最後に、カスタマイズされたテンプレートの理由を明らかにしました。

ヘッダーには、query_postsへの呼び出しが含まれていました。この呼び出しは、1ページに1回だけ呼び出すことができます。その後、wp_reset_queryrescueとなります。ちょっと待って!これらの関数の両方が非難されているようで、どちらも使用しないでください!代わりに、常に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"]はテンプレートページに追加できないようです。

それだけです。

+1

'query_posts'と' wp_reset_query'のどちらも非推奨です。 'query_posts'はメインループにある投稿を修正するためのもので、新しい' WP_Query'(または 'get_posts'を使う)は、テンプレート内に_new_分離ループが必要なときに行うべきことです。 –

+0

@richardだから、私は「それは思われます」と言っています。それは適切な深い研究をするのが面倒です。入力のおかげで。結局私はあなたの教えを反映するために私の答えを修正するかもしれません! :P – cregox

関連する問題