0

このサイトの他の人の助けのおかげで、ページ上で進行状況バーが正常に機能するようになりました。

しかし、同じソース コードを取得してウィジェットとして保存しようとするたびに、2 つのカスタム フィールド (Target と Complete) のデータがゼロとして返されます。Target と complete は同じなので、完了したすべてのタスクがウィジェットに表示されます。

これがウィジェットの「関連する」コード スニペットです。必要に応じて完全なソースを投稿できます。

$challenge_widget_query = new WP_query( array( 'post_type' => 'challenges', 'posts_per_page' => 3 ) );

while ($challenge_widget_query->have_posts()) : $challenge_widget_query->the_post(); 

    echo "<li><a href='".get_permalink()."'>".get_the_title()."</a>";

$target = (int) get_post_meta($post->ID, 'target', true);             
$complete = (int) get_post_meta($post->ID, 'complete', true);       
$percentage = $complete / $target;
$percentage = round($percentage * 100);
$whatsleft = 100-$percentage;
if($whatsleft < 0) $whatsleft=0;

echo "<table width='250' border='0' cellpadding='0' cellspacing='0'><tr>";

if($complete === $target) 
{echo "<td><img src='http://www.smokeyvstheworld.com/wp-content/uploads/2012/05/completed.gif' style='width:200px;height:24px;'></td>";}
elseif($complete == "0")
{echo "<td><img src='http://www.smokeyvstheworld.com/wp-content/uploads/2012/05/pending.gif' style='width:200px;height:24px;'></td>";}
else
{echo "<td width=". $percentage ."%><img src='http://www.smokeyvstheworld.com/wp-content/themes/spectre/images/brown/grnbar.jpg' style='width:100%;height:12px;'></td><td width=". $whatsleft ."%><img src='http://www.smokeyvstheworld.com/wp-content/themes/spectre/images/brown/grybar.jpg' style='width:100%;height:12px;'></td>";}


echo "</tr><tr><td colspan='2'><div align='right'>". $complete ." of ". $target ." completed</div></td>
  </tr></table></li>";

endwhile;
echo "</ul>";

私のページのこの同じソースコードは正常に動作します...私は途方に暮れています

これがページとウィジェットの両方で機能していることを確認できます: http://smokeyvstheworld.com/challenges

ある時点で、エコー"" にあるものを切り取っているようです。うまく表示されるようにフォーマットしなかったと思います

4

1 に答える 1

0

これを実行して、実際の問題がどこにあるかを調べてみてください。

print "get_post_meta({$post->ID}, 'target', true)<br />";
print get_post_meta($post->ID, 'target', true);

これはあなたに次のようなものを与えるはずです

get_post_meta(12, 'target', true);
12000

12 に数字が表示されない場合は、追加していません。

global $post;

そのため、$post->ID が何かわかりません。

「12000」などの数字が表示されない場合、その投稿の「ターゲット」メタ キーは実際には保存されていません。wp_postmetaテーブルでデータベースを調べて確認できます。

幸運を!

于 2012-06-03T05:29:29.383 に答える