query_posts()が非推奨としてマークされていないのはなぜですか?
-
-
それは素晴らしい質問です!query_posts()を使用すべきでない理由がわからない、これに遭遇した他の人のために、[ここ](http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts)および[ここ](http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/)は、いくつかの優れた入門書Q&Aです.That is a great question! For others coming across this who don't know why you shouldn't use query_posts(), [here](http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts) and [here](http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/) are some good primer Q&A's on it.
- 2
- 2016-05-18
- Tim Malone
-
2 回答
- 投票
-
- 2016-05-18
提案する新しいtracチケット
チケット#36874 を作成しました query_posts()
の非推奨.それが受け入れられるかどうかは良い問題です.query_posts()
の本当の大きな問題は、プラグインやテーマで広く使用されていることです.ただし、絶対に絶対にすべきではない理由については非常に優れた記述があります. それを使用します.ここでWPSEに関する最も壮大な投稿は、次の投稿だと思います.非推奨!==削除.したがって、
query_posts()
を非推奨にしても、質の悪い開発者や、WordPressを知らず、貧弱なユーザーを使用する一般の人々による使用は停止されません.ガイドラインとしての質の高いチュートリアル.いくつかの証拠と同じように、人々がcaller_get_posts
でWP_Query
を使用する場合、まだここでいくつの質問がありますか?長年にわたって非推奨になっています.非推奨の関数と引数は、コア開発者が適切と判断したときにいつでも削除できますが、
query_posts()
では、数百万のサイトが破損するため、これはおそらく発生しません.そうです、おそらくquery_posts()
が完全に削除されることはないでしょう.これは、おそらく非推奨になることはほとんどないという事実につながる可能性があります.これは出発点ですが、WordPressで何かを非推奨にしても、その使用が停止するわけではないことを覚えておく必要があります.
2016年5月19日更新
私が調達したチケットは現在閉じられており、 4歳 のチケットと重複しているとマークされています.このチケットは wontfix として閉じられ、再開されました.まだ開いたままで、未解決のままです.
コア開発者はこの古い忠実な小さな悪にぶら下がっているようです.興味のある方は、こちらが4年前のチケットの複製です
I have just created a new trac ticket, ticket #36874, to propose the deprecation of
query_posts()
. Whether or not it will be accepted remains a good question.The real big issue with
query_posts()
is, it is still widely used by plugins and themes, even though there have been really good writings on the subject of why you should NEVER EVER use it. I think the most epic post here on WPSE is the following one:deprecation !== removal, so deprecating
query_posts()
will not stop its usage by poor quality devs and people in general who do not know WordPress and who use poor quality tutorials as guidelines. Just as some proof, how many questions do we still get here where people usecaller_get_posts
inWP_Query
? It has been deprecated for many years now.Deprecated functions and arguments can however be removed at any time the core devs see fit, but this will most probably never happen with
query_posts()
as this will break millions of sites. So yes, we will probably never see the total removal ofquery_posts()
- which might lead to the fact that it will most probably never get deprecated.This is a starting point though, but one has to remember, deprecating something in WordPress does not stop its use.
UPDATE 19 May 2016
The ticket I raised is now closed and marked as duplicate to a 4 year old ticket, which was closed as wontfix and was reopened and still remain open and unresolved.
Seems the core developers are hanging on to this old faithful little evil. Everyone interested, here is the duplicate 4year old ticket
-
なぜ彼らはチケットhttps://core.trac.wordpress.org/ticket/36874を閉じたのですか?この質問はチケット1:1に関連しているため、@ PieterGoosenにこのスレッドへのリンクをチケットhttps://core.trac.wordpress.org/ticket/36874に含めることができますか?Why they closed the ticket https://core.trac.wordpress.org/ticket/36874? Please @PieterGoosen can you include the link to this thread in your ticket https://core.trac.wordpress.org/ticket/36874 since this question relates to the ticket 1:1
- 0
- 2016-05-19
- prosti
-
@prostiこの問題はすでに発生しているため、重複としてマークされているようです... ** 4年前** [ここにあります](https://core.trac.wordpress.org/ticket/19631).@prosti Looks like it was marked as duplicate as this issue has already been brought up... **4 years ago** [found here](https://core.trac.wordpress.org/ticket/19631).
- 0
- 2016-05-19
- Howdy_McGee
-
- 2016-05-19
[やや暴言]
真に非推奨となるものは何もないというのは、現時点での基本的な哲学です.非推奨の通知はありがたいことですが、関数がある時点で実際に削除されない場合は無視されます.
WP_DEBUG
をオンにして開発せず、実際に破損がない場合は通知に気付かない人がたくさんいます.OTOHハンド、この関数は
goto
ステートメントのようなものです.個人的には、goto
を使用したことはありませんが(定義が予想よりも小さい場合)、デフォルトで悪ではない状況を指し示す引数は理解できます.query_posts
についても同じことが言えます.これは、単純なループを作成するために必要なすべてのグローバルを設定する簡単な方法であり、ajaxまたはrest-apiコンテキストで役立ちます.私はそれらのコンテキストでもそれを使用することは決してありませんが、そこでは、関数自体が悪であるというよりも、コーディングのスタイルの問題であることがわかります.もう少し深く掘り下げてみると、主な問題は、グローバルを設定する必要があるということです.それが主な問題であり、それらを設定するのに役立つ1つの機能ではありません.
[somewhat rant]
It is the standing core philosophy at this point that nothing is truly deprecated. Deprecation notice, while it is a nice to have, is just going to be ignored if the function will not actually be dropped at some point. There are many people that do not develop with
WP_DEBUG
on and will not notice the notice if there will not be an actual breakage.OTOH hand, this function is like
goto
statement. Personally I never (for smaller definition then expected) usedgoto
but I can understand the arguments pointing to some situation in which it is not evil by default. Same goes withquery_posts
, it is a simple way to set up all the globals required to make a simple loop, and can be useful in ajax or rest-api context. I would never use it in those contexts as well, but I can see that there, it is more of an issue of style of coding then a function being evil by itself.Going a little deeper, the main problem is that globals need to be set at all. That is the main problem not the one function that helps setting them.
-
また、比較のために、実際には2次クエリよりも `query_posts`の方が遅いです(読み取り:メインクエリではありません).And for the comparison, is really `query_posts` slower than a secondary query (read: not the main query).
- 0
- 2016-05-19
- prosti
-
@prostiは、wp_queryを設定して実行するだけなので、どれだけ遅くなる可能性がありますか?確かにオーバーヘッドがありますが、おそらくここではミリ秒について話します.もちろん、これは、WPがデフォルトでクエリを提供しない場所で使用することを前提としています.それが悪い場所では、 `query_posts`自体ではなく、WPがロードされているときに実行された役に立たないクエリです@prosti, as it just sets and runs a wp_query, how much slower can it be? sure there is some overhead but we probably talking miliseconds here. This of course assumes you use it in places where WP do not provide a query by default. In places where it does it is bad, not the `query_posts`itself but the useless query that was done when WP was loading
- 0
- 2016-05-19
- Mark Kaplun
技術的に言えば、2つの
query_posts()
関数があります.1つのquery_posts()
は実際にはWP_Query::query_posts()
であり、もう1つはグローバル空間にあります.正気からの質問:
グローバルな
query_posts()
がその「悪」である場合、なぜ非推奨にならないのですか?または、なぜ
_doing_it_wong
としてマークされていないのですか.