現在の投稿IDをfunctions.phpの配列に入れる必要があります。
function filter_query( $query ) {
$query['post__not_in'] = array(7);
return $query;
}
add_filter('wpc_query', 'filter_query', 1 );
get_the_ID();
またはglobal $post; $id = $post->ID;
は何らかの理由で機能しませんでした。
私はこれがすべての場合にうまくいくはずだと思います - あなたがループにいるかどうかにかかわらず。 (ウィジェットでは、たぶんあなたはループの中で ではない である)
ループの外側では、これは単一のページまたは投稿では非常にうまく機能しますが、他の種類のページでは希望の投稿が表示されない場合があります。 (ホームページ、カテゴリページ、...)そのような場合、WordPressの ' is_singular function ...を使用して、単数ページでのみコードを実行するための条件を追加することをお勧めします。
とにかく、ここにあなたのコードの修正版があります:
function filter_query( $query ) {
if(in_the_loop()) $post_id = get_the_ID();
else $post_id = get_queried_object_id();
if($post_id) {
if(empty($query['post__not_in'])) $query['post__not_in'] = array(); // that way if someone else already has stuff in $query['post__not_in'], we won't override it but append to it...
$query['post__not_in'][] = $post_id;
}
return $query;
}
add_filter('wpc_query', 'filter_query', 1 );
お役に立てれば!