WP плагин с записями работает, а со страницами нет

Anderew
На сайте с 06.03.2010
Offline
125
898

Сайт на движке WordPress. Установил плагин AdsPlace'r. Плагин позволяет вставлять сквозной код рекламы Адсенса (например) в теле статьи. Но вот парадокс, весь контент у меня опубликован, через "страницы", а плагин работает только в "записях".

Как сделать, чтобы и на страницах заработал?

Вот файл с исходным кодом [ATTACH]157601[/ATTACH]. Может можно, что-то там поменять?

zip adsplacer.zip
Спорим, мощней и дешевле VPS не знаешь? http://www.ihc.ru/?ref=2920
A
На сайте с 23.11.2016
Offline
7
#1

скорее всего после строчки add_action('save_post_post', array($this, 'save_post')); нужно добавить еще add_action('save_post_page', array($this, 'save_post')); чтоб он добавлял дополнительное поле и для страниц.

А вот здесь add_filter('the_content', array($this, 'paste_ads_in_post'), 25); он уже проверяет добавлять или нет в контент свое содержимое, т.е. он для каждой записи хранит дополнительное поле, которое и говорит выводить или нет, а для страниц оно не добавляется.

S3
На сайте с 29.03.2012
Offline
330
#2

anzarsh, так просто не получиться. Как минимум нужно продублировать и видоизменить модуль создания доп.полей для страниц, не просто add_action/ иначе даст ошибку подключения несуществующей функции

A
На сайте с 23.11.2016
Offline
7
#3


add_action('save_post_page', array($this, 'save_page'));

public function save_page($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_pages', $post_id)) return;

$ads_exclude = array(
'all' => 'no',
'before' => 'no',
'in' => 'no',
'after' => 'no'
);

foreach ($ads_exclude as $key => $exclude) {
if (isset($_POST['adplacer_exclude_'.$key]) && $_POST['adplacer_exclude_'.$key] == 'yes') {
$ads_exclude[$key] = 'yes';
}
}

update_post_meta($post_id, 'adsplacer_ads', $ads_exclude);
}

ну можно добавить, для верности что то типа того, я думаю общее направление понятно. Если и так не будет работать, тогда не все так просто с этим плагином.

A
На сайте с 01.07.2016
Offline
3
#4
anzarsh:

add_action('save_post_page', array($this, 'save_page'));

public function save_page($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_pages', $post_id)) return;

$ads_exclude = array(
'all' => 'no',
'before' => 'no',
'in' => 'no',
'after' => 'no'
);

foreach ($ads_exclude as $key => $exclude) {
if (isset($_POST['adplacer_exclude_'.$key]) && $_POST['adplacer_exclude_'.$key] == 'yes') {
$ads_exclude[$key] = 'yes';
}
}

update_post_meta($post_id, 'adsplacer_ads', $ads_exclude);
}

ну можно добавить, для верности что то типа того, я думаю общее направление понятно. Если и так не будет работать, тогда не все так просто с этим плагином.

Спасибо помогло разобраться со своей проблемкой:)

Anderew
На сайте с 06.03.2010
Offline
125
#5

Спасибо всем, кто отписался. Свою проблему решил установив другой плагин "Ad Injection" называется. Очень гибкий и на все 100 справляется со своей задачей. Единственный минус, что не на русском.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий