web-dev-qa-db-ja.com

プログラムでterms/term_taxonomiesを追加したときの奇妙な振る舞い

これは確かに私にとってはバグのように見えます。私はあなたが新鮮なインストールでそれをテストするためにあなたのために以下のコードをまとめました。基本的に、このコードは次の効果を得るために "未分類"の下に2つのサブカテゴリを追加します。

uncategorized
   sub-uncategorized
       sub-sub-uncategorized

それらをwp_termsおよびwp_term_taxonomiesに追加しても問題ありません。両方の親IDが正しく追加されています。

問題は、WP管理UIにあります。未分類とサブ未分類のみが表示されます。最後の1つ(サブサブ)はアクションに欠けています!

しかし、まったく同じ「カテゴリの追加」ページで親のドロップダウンを選択すると、sub-uncatとsub-sub-catの両方が適切にインデントされた状態で表示されます。階層

uncategorized
   sub-uncategorized
       sub-sub-uncategorized

見つからないサブサブ猫をメインビューに移動するには、次のいずれかの手順を実行する必要があります。

停止して起動することでWPをリサイクルします。

または単にダミーの猫を追加してから、「カテゴリ」リンクをクリックしてすべての猫を一覧表示します。それからwpは潜水艦を正しく表示することを覚えています。

なぜこれが起こっているのか誰かに何か考えがありますか?

私は猫を視野に入れるためだけに愚かなステップを踏む必要がないように、どんなプログラム的な改善策でも感謝します。

コードは以下の通りです。あなたがそれをフレッシュインストールでテストすることができる前にそれに応じてちょうどwp-load.phpパスを調整して、それから私があなた自身のために上で説明したことをチェックする。

<?php

error_reporting (E_ALL);

//load the wp Shebang into this page
include (" put the full path here to the wp-load.php");


define('WP_USE_THEMES', false);


//add a sub category under the "uncategorized" that fresh install comes with
$Term = "Sub-UnCategorized";
$args = array('parent' => 1 );
wp_insert_term($Term, "category", $args);


//add another sub under the recentyl created above. 
$Term = "Sub-Sub-UnCategorized";
$args = array('parent' => 3 );
wp_insert_term($Term, "category", $args);

echo "<pre>

After running this code, you will notice that the Sub-Sub-UnCategorized is missing from the view. 

But what's funny is the dropdown. 
Check the dropdown for the *parent* selection, you will see that the missing
Sub-Sub-UnCategorized is there. 

In order to get the missing sub-sub into the view, you will have to do two things. 

1 - Add a dummy cat.
2 - Click on the categories link on the admin navigation.

With that, wp will sort this problem out and you will see everything you should have.

I cannot figure out what's causing this behavior and how to remedy this short adding the dummy cat and removing it later. 

</pre>";

?>
5
Average Joe

多分これは助けることができる

delete_option('taxonomy-slug_children');

'taxonomy-slug'を 'cat'または他の使用している分類法に置き換えてください。この行は、用語を作成した直後に、同じアクションフック関数で使用されることになっています。

2
ifdion