2014-04-11 2 views
0

Я использую этот код, чтобы проверить, какие теги используются в категории Wordpress. Он отображает список флажков. Я хочу, чтобы форма запоминала мой выбор после отправки.Как запомнить выбор флажка после отправки?

Это мой код:

<form name="tags" onChange="document.forms.tags.submit();"> 
    <?php 
    if (is_category()){ 
     $cat = get_query_var('cat'); 
     $yourcat = get_category ($cat); 
    } 
    $tag_IDs = array(); 
    query_posts('category_name='.$yourcat->slug); 
    if (have_posts()) : while (have_posts()) : the_post(); 
     $posttags = get_the_tags(); 
     if ($posttags): 
     foreach($posttags as $tag) { 
     if (!in_array($tag->term_id , $tag_IDs)): 
      $tag_IDs[] = $tag->term_id; 
      $tag_names[$tag->term_id] = $tag->name; 
      $tag_slug[$tag->term_id] = $tag->slug; 
     endif; 
     } 
     endif; 
    endwhile; endif; 
    wp_reset_query(); 
    if (!empty($tag_IDs)){ 
     echo '<h3>Het meest geschikt voor</h3>'; 
     echo "<input type=\"radio\" name=\"tag\" value=\"\"> Alles weergeven<br>"; 
    } 
    foreach($tag_IDs as $tag_ID){ 
     echo '<input type="radio" name="tag" value="'.$tag_slug[$tag_ID].'"> '.$tag_names[$tag_ID].'<br>'; 
    } 
    ?> 
</form> 

Прежде чем я использовал этот код, чтобы запомнить выбор, но он не работает с приведенным выше кодом больше:

if((isset($_GET["tag"])) && $_GET["tag"] == "tag-example") { echo "checked";} 

Я думал, что это будет работают, как это, но это не так:

echo '<input type="radio" name="tag" value="'.$tag_slug[$tag_ID].'" '.if((isset($_GET["tag"])) && $_GET["tag"] == "oudere-kinderen") { echo "checked";}.'> '.$tag_names[$tag_ID].'<br>'; 

Как я могу получить форму для запоминания выбора флажка?

Решение:

С помощью @Jouke я пришел к этому решению:

if (is_category()){ $cat = get_query_var('cat'); $yourcat = get_category ($cat); } $tag_IDs = array(); query_posts('category_name='.$yourcat->slug); if (have_posts()) : while (have_posts()) : the_post(); $posttags = get_the_tags(); if ($posttags): foreach($posttags as $tag) { if (!in_array($tag->term_id , $tag_IDs)): $tag_IDs[] = $tag->term_id; $tag_names[$tag->term_id] = $tag->name; $tag_slug[$tag->term_id] = $tag->slug; endif; } endif; endwhile; endif; wp_reset_query(); if (!empty($tag_IDs)){ echo '<h3>Het meest geschikt voor</h3>'; echo "<input type=\"radio\" name=\"tag\" value=\"\"> Alles weergeven<br>"; } foreach($tag_IDs as $tag_ID){ $test = $tag_slug[$tag_ID]; echo '<input type="radio" name="tag" value="'.$test.'"' ; if((isset($_GET["tag"])) && $_GET["tag"] == $test) { echo ' checked="checked"'; } echo '> '.$tag_names[$tag_ID].'<br>'; }

ответ

0

Функция (wordpress documentation):

<?php checked($checked, $current, $echo); ?> 

Пример:

<input type='radio' name='tag' value='1' <?php checked(isset($variable)); ?>>variable 

Другой пример (РНР):

$test=test; 
echo "<input type='radio' name='tag' value='$test' checked(isset($test)); >"; 

вытекания:

$tagslug = $tag_slug[$tag_ID]; 
echo '<input type="radio" name="tag" value=/"$tagslug/" checked(isset($tagslug));>'; 

Другой пример без функции WordPress проверяемого: Вставьте его в here и протестировать его

$test = "slug"; 
echo '<input type="radio" name="tag" value="$test"' ; 
if (isset($test)) { 
echo 'checked="checked"'; 
} 
echo '>'; 
+0

Если я использую 'echo ' '. $ tag_names [$ tag_id].
'; 'then' checked =' checked'' отображается на самой странице. – edow

+0

Предполагается, что он выводит not checked = 'checked', но только что отмечен – Jouke

+0

Он только дает 'checked = 'checked'' для каждого тега, поэтому сама страница (не только в исходном коде) я вижу, например, десять раз строку 'checked = 'checked'', если есть десять тегов. – edow

0

Попробуйте < входной тип = имя

эхо " "радио"=» тег "value =" '. $ tag_slug [$ tag_ID].' "'.if ((isset ($ _ POST [" tag "])) & & $ _POST [" tag "] ==" oudere-kinderen ") { echo "checked = check ed ";}. '>'. $ tag_names [$ tag_ID]. '
';

+0

С помощью этого кода страницы не показывает больше. – edow

Смежные вопросы