На сайте WP есть такая функция, которая вставляет код (рекламу) после определенного абзаца в теле статьи.
function pb_ad_into_post($content){
if(is_single()){
$pb_post_advert = get_option( 'pb_post_advert' );
if(empty($pb_post_advert)){
return $content;
}
$pb_post_advert = html_entity_decode( $pb_post_advert, ENT_COMPAT );
$insertAfter = 3; //номер абзаца, после которого идет реклама
$closingP = '</p>';
$contentBlock = explode($closingP, $content);
foreach($contentBlock as $key => $con){
if(trim($con)) {
$contentBlock[$key] .= $closingP;
}
if(($key + 1) == $insertAfter){
$contentBlock[$key] .= $pb_post_advert;
}
}
$content = implode('', $contentBlock);
}
return $content;
}
add_filter('the_content', 'pb_ad_into_post');
Собственно номер абзаца указывается в строке $insertAfter = 3;
. Мне нужно, чтобы эта цифра выходила из переменной, берущейся из настройки, например такой
$number = get_option( 'number' );
Вставляю по разному, не получается. Кто-нибудь знает как это сделать?
Проблема в том, что у вас не настроена опция скорее всего, так как возвращает "ничего", значит в БД не указана. Для примера я буду иметь в виду название опции abzac_ads
У вас есть три пути:
abzac_ads
abzac_ads
в БД, тоесть в таблице wp_options
добавить строку с option_name
= abzac_ads
option_value
= нужное нам число
define('CONF_ADS', 'нужное нам число');
Самый адекватный способ и правильный, тот что первый. Он гибок, а создание страницы в админке(если не хотите редактировать плагин, так как есть шанс потерять изменения при обновлении) занимает минуту, добавление в functions.php например в тему, что используется.
Далее, использывать get_option('abzac_ads');
в нужном месте, но такой формат слегка не правильный, правильно получать так get_option('abzac_ads', 3);
, так как в случае, если опцию не находит Вам по умолчанию вернет число 3, которое можно заменить на любое другое, если опцию не нашло или возникли ошибки, в этом случае реклама будет работать всегда.
Если же Вы решили делать третьим и найболее неправильным методом, то для получения пареметра просто пишем в функции вместо числа абзаца CONF_ADS
, который мы определили ранее. В даном методе минус в том, что вам всегда нужно будет для смены абзаца редактировать файл, что очень плохо и с таким успехом можно редактировать те же число вручную.
P.S.
Вообще, я бы создал метаполе для постов, например "Куда поставить рекламу"(ключ например kuda_rekamu
), и при фильтре контента, Вашей функции передавал бы параметр дополнительно с id
поста, для точго, чтоб в функции, которая вызывается при фильтре, можно было использывать конструкцию вместо получения опции, получения метаключа от поста, тоесть get_post_meta($id,'
kuda_rekamu,true');
, определить дополнительно значение по-умолчанию 3й абзац, а если ключ указан то использывать значения ключа. В таком случае, для разных постов будет возможность ставить рекламу в разные места, например для поста 1
поставил рекламу после 10го абзаца, для поста 2
поставил рекламу после 5го, а для поста 3
не указал, и ему по умолчанию поставило рекламу после 3го абзаца.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Kак установить config heroku через PHPЯ знаю что можно сделать это через командную строку вот так: heroku config:set GITHUB_USERNAME=joesmith
Всем привет! Как в yii можно кешировать изображения? Сейчас у меня все изображения берутся прямо из папки uploads, они отлично кешируются средствами...
Имеется cron php скрипт, который выполняет некоторые операции с БДВ этом скрипте я использую такие wp функции, как wp_insert_term(), wp_insert_post(),wp_cache_flush()...
Почему-то перестал работать $_POST со стороны обработчика,GET тоже не работает, ajax отправляет, но не доходит до php файлаОтправляю из файла "index