#php #wordpress #loops #for-loop #taxonomy
#php #wordpress #циклы #for-цикл #таксономия
Вопрос:
У меня возникли некоторые проблемы с правильной работой этого цикла.
Я хочу вставить страну, штат, город, сообщество из карт Google в качестве иерархии в пользовательской таксономии WordPress. Все переменные устанавливаются, но когда он проходит через цикл for, он только заполняет и вставляет country или 1-й массив $loop[0] .
Я использую $pastID [$ d], чтобы сохранить последний term_id, чтобы использовать его в качестве родительского в следующем термине. Если это просто плохо, дайте мне знать.
Я должен использовать глобальные переменные, поскольку я также подключаюсь к существующему плагину.
$custom_tax_name = "location";
$loop = array();
$loop[0] = $country = $GLOBALS['custom_array']['country'];
$loop[1] = $state = $GLOBALS['custom_array']['state'];
$loop[2] = $city = $GLOBALS['custom_array']['city'];
$loop[3] = $community = $GLOBALS['custom_array']['community'];
$pastID = array();
$terms = array();
for($i = 0; $i<=3; $i ) {
$d = $i - 1;
if (!empty($loop[$i])){
$term_exist = term_exists( $loop[$i], $custom_tax_name );
if (!$term_exist){
if ($i == 0){
$pastID[$d] = wp_insert_term("$loop[$i]", $custom_tax_name);
} else {
if (empty($pastID[$d]['term_id'])){
$term = get_term_by('name', $loop[$i], $custom_tax_name);
$termParent = $term ? $term->parent : false;
if ($termParent == false){
continue;
}
$pastID[$d] = wp_insert_term("$loop[$i]", $custom_tax_name, array("parent" => $termParent));
} else {
$termParent = $pastID[$d]['term_id'];
$pastID[$d] = wp_insert_term("$loop[$i]", $custom_tax_name, array("parent" => $termParent));
}
}
} else {
$pastID[$d] = $term_exist;
}
$terms[] = $loop[$i];
delete_option('{$custom_tax_name}_children');
} // nothing exist
}
Ответ №1:
Хорошо, итак, я смог понять это после того, как посмотрел и почувствовал себя немного медленно.
$ pastID должен иметь переменную $ i при ее настройке и $ d при ссылке на нее в следующем цикле. Приведенный ниже код создаст иерархическую таксономию глубиной до 4 , используя мои переменные для страны, штата, города и сообщества. Он проверит, существует ли переменная, и если нет, он убедится, что у нее есть родительский элемент, с которым ее можно связать или не вставлять. В любом случае спасибо.
for($i = 0; $i<=3; $i ) {
$d = $i - 1;
if (!empty($loop[$i])){
$term_exist = term_exists( $loop[$i], $custom_tax_name );
if (!$term_exist){
if ($i == 0){
$pastID[$i] = wp_insert_term($loop[$i], $custom_tax_name);
} else {
if (empty($pastID[$d]['term_id'])){
$term = get_term_by('name', $loop[$i], $custom_tax_name);
$termParent = $term ? $term->parent : false;
if ($termParent == false){
continue;
}
$pastID[$i] = wp_insert_term($loop[$i], $custom_tax_name, array("parent" => $termParent));
} else {
$termParent = $pastID[$d]['term_id'];
$pastID[$i] = wp_insert_term("$loop[$i]", $custom_tax_name, array("parent" => $termParent));
}
}
} else {
$pastID[$d] = $term_exist;
}
$terms[] = $loop[$i];
delete_option('{$custom_tax_name}_children');
} // nothing exist
}