• Решено Deniska

    (@deniska)


    Здравствуйте. Не получается исключить категории и страницы на сайте. Исключение делаю с помощью Опций темы созданному по вот этому Уроку.
    В теме использую стандартный вывод списка категорий через:

    <?php wp_list_cats('orderby=name&exclude='.get_option("name_excludecat").'&optioncount=1&hierarchical=0'); ?>

    Тоже и со страницами.
    В опциях исключение идёт с помощью мультичека:

    array( "name" => "Category",
    "desc" => "Exclude category.",
    "id" => $shortname."_excludecat",
    "type" => "multicheck",
    "options" => $wp_cats,
    "std" => ""),

    $wp_cats — array со страницами. Не даю код, потому что вряд ли в нём проблема. Возможно проблема в коде из урока, а именно в функции мультичек. Кто специалист, может поймёте что не так в нём.
    В опциях высвечивается весь список страниц с чекбоксом у каждой. Выбираю что исключить, но на сайте ничего не исключается. Хотя выбор запоминается.
    Почему не происходит исключение, помогите пожалуйста?
    Спасибо!

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • сделай
    print_r( get_option("name_excludecat") );
    посмотри что приходит

    Автор Deniska

    (@deniska)

    Сделал, а на странице ничего не изменилось. Есть ли разница на хостинге проверять или на локальном компьютере? Не понятно что не так. Раньше вместо мультичека я использовал простое поле ввода, возможно нужно БД почистить? Не понимаю что это такое, вроде всё правильно.

    эсли ничего не изменилось — значит эти параметры на страницу не приходят:)
    посмотри в БД есть ли такая опция вообще, и что там есть в ней
    да, и еще, старайся не использовать двойные и одинарные кавычки в одной строке.

    Автор Deniska

    (@deniska)

    т.е. «name_excludecat» лучше в одинарные кавычки сделать? Это правильно, я просто всегда думал что так неправильно. Ок.
    В БД есть строки с исключением всех нужных мне страниц.

    можете привести их здесь?

    Автор Deniska

    (@deniska)

    Да конечно могу.

    такс, тебе надо id-шники категорий и постов(страниц)
    true для этого не подходит, нужно числовое значение 🙂
    т.е. option_value должно быть числом ( в данном случае ), внимательно посмотри где у тебя формирует и сохраняет параметры

    Автор Deniska

    (@deniska)

    Если посмотришь на урок, то там есть функция сохранения. У меня лишь маленькое изменение в этой функции:

    $_REQUEST['saved']='true';
    				?>
    				<script language="javascript" type="text/javascript">
    					location.href='<?php bloginfo('url'); ?>/wp-admin/admin.php?page=<?php echo $set; ?>&saved=true';
    				</script>
    				<?
    			die();

    Потому что если оставить всё без изменений, то появлялась ошибка «Невозможно отправить header, потому что отослан уже.» Файлы были все без BOM, это было единственное решение. Возможно в этом проблема.

    нет не в этом,
    вот тебе простой пример создания и работы с настройками темы

    /* настройки темы, если надо */
    $options = array('option_one'=>'','option_two'=>'');
    add_option('theme_options', $options, 'Настройки темы', 'yes');
    
    function theme_admin(){
        global $themename, $shortname;
        if ( $_REQUEST['saved'] ) { echo '<div id="message" class="updated fade"><p><strong>Настройки темы сохранены.</strong></p></div>'; }
        $options = get_option('theme_options');
    ?>
    <div class="wrap">
        <h2>Настройки</h2>
        <form method="post">
    
            <table cellpadding="5" cellspacing="0" border="0">
                <tr>
                    <td><label for="option_one">Настройка первая</label>&nbsp;</td>
                    <td><input name="option_one" size="90" type="text" value="<?php echo $options['option_one']; ?>" /></td>
                </tr>
                <tr>
                    <td><label for="option_two">Настройка вторая</label></td>
                    <td><input name="option_two" size="90" type="text" value="<?php echo $options['option_two']; ?>" /></td>
                </tr>
            </table>
    		<p class="submit">
    			<input type="submit" name="save" value="Сохранить" />
    			<input type="hidden" name="action" value="save" />
    		</p>
    	</form>
    </div>
    <?php
    }
    function theme_add_admin(){
        global $themename, $shortname, $options;
        if ( $_GET['page'] == basename(__FILE__) ) {
            if ('save' == $_REQUEST['action'] ) {
                update_option('theme_options',array('option_one'=>$_REQUEST['option_one'],'option_two'=>$_REQUEST['option_two']));
                header("Location: themes.php?page=functions.php&saved=true");
                die;
            }
        }
        add_theme_page( 'Настройки темы', 'Настройки', 'edit_themes', basename(__FILE__), 'theme_admin' );
    }
    add_action('admin_menu', 'theme_add_admin');

    Автор Deniska

    (@deniska)

    Мда, задал себе головоломку. А какая разница этой функции от той, которая предлагается в уроке по которому сделана моя админка? Я не спец, может не вижу каких-то тонкостей?

    это проще

    Автор Deniska

    (@deniska)

    Может и проще, но должна быть поддержка мультичека. Скажи как должны передаваться данные, чтобы всё работало как надо. В каком куске кода нужно копаться, чтобы вместо true передавались значения?

    <input type="checkbox" name="<?php echo $pn_key; ?>" id="<?php echo $pn_key; ?>" value="true" <?php echo $checked; ?> />
    если ты использовал это то внимательно посмотри на value
    там должен быть id категорий или постов которые ты исключаешь

    Автор Deniska

    (@deniska)

    Я понял что так должно быть, но что туда поместить нужно чтобы оно работало? Как я понимаю там должно быть что-то типа value="<?php echo $value['id']; ?>" <?php echo $checked; ?>? Если можешь объясни более подробно, а то я со своими знаниями в php не совсем понимаю что изменять.

    тогда давай свой исходник

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Не получается исключить категории и страницы.» закрыта для новых ответов.