И снова Wordpress

L0
На сайте с 15.04.2015
Offline
76
509

Всем доброго! Выручайте друзья, сайт на Wordpress на страницах с материалами (постами) в темплейте шаблона single.php я вывожу рекламный код, а на некоторых страничках с материалами этот код мне не нужен.

Возможно как то через php вывести определенный код на всех страницах в single.php шаблоне темы, кроме записей с определенными Id ?

Да, я опасен! Я говорю вам - правду
Апокалипсис
На сайте с 02.11.2008
Offline
391
#1

Используйте плагин.

Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
ranking factor
На сайте с 01.12.2017
Offline
174
#2

В functions.php

--------------------------------------------------------------------------------------------------------------------------

// Вывод рекламы в посте после определенного абзаца, за исключением определенных постов

add_filter( 'the_content', 'tp_ad_to_post_content' );

function tp_ad_to_post_content( $content ) {

if( !is_single() )

return $content;

$paragraphAfter = 4;

$content = explode ( "</p>", $content );

$new_content = '';

for ( $i = 0; $i < count ( $content ); $i ++ ) {

if ( $i == $paragraphAfter ) {

if ( ! is_single ( array(1026, 1027, 1029, 1040) ) ) {

$new_content .= ' здесь ваш код рекламы '; }

}

$new_content .= $content[$i] . "</p>";

}

return $new_content;

}

----------------------------------------------------------------------------------------------------------------------------

$paragraphAfter = 4; — это номер абзаца, после которого выводится реклама

1026, 1027, 1029, 1040 — это ID постов, в которых реклама выводиться не будет

L0
На сайте с 15.04.2015
Offline
76
#3
smurf

- спасибо!

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

после тела wp-content (основного контента/статьи).

ranking factor
На сайте с 01.12.2017
Offline
174
#4

создайте произвольный виджет в functions.php

-----------------------------------------------------------------------------

function wpb_widgets_init() {

register_sidebar( array(

'name' => 'Произвольная область для виджетов',

'id' => 'custom-header-widget',

'before_widget' => '<div class="chw-widget">',

'after_widget' => '</div>',

'before_title' => '<h2 class="chw-title">',

'after_title' => '</h2>',

) );

}

add_action( 'widgets_init', 'wpb_widgets_init' );

-----------------------------------------------------------------------------------

Этот код регистрирует новую область для виджета в вашей теме.

Перейти на страницу Внешний вид » Виджеты и вы увидите новую область под названием "Произвольная область для виджетов".

Добавляем в нее код рекламного блока и сохраняем.

Отредактировать файл single.php - добавить следующий код в то место, где нужно вывести область для виджета

---------------------------------------------------------------------------------------------------------------------

<?php

if ( is_active_sidebar( 'custom-header-widget' ) ) : ?>

<div id="header-widget-area" class="chw-widget-area widget-area" role="complementary">

<?php dynamic_sidebar( 'custom-header-widget' ); ?>

</div>

<?php endif; ?>

-----------------------------------------------------------------------------------------------------------------------

В зависимости от темы, потребуется добавить CSS для того, чтобы оформить область для виджета

div#header-widget-area {

width: 100%;

text-align: center;

}

--------------------------------------------------------------------------------------------------------

Загрузите плагин Widget Logic и с его помощью управляйте где показывать рекламу (главная, статьи, страницы...) и по каким ID не показывать ее. В новом виджете (внизу есть поле)пропишите это: ! is_single ( array(1026, 1027, 1029, 1040) )

Можно и в условия функции вписать, но плагин будет лучше справляться.

Если что-то еще не понятно, пишите в ЛС.

E
На сайте с 27.10.2018
Offline
1
#5
Leks007:

а если упростить, без учета параграфа сделать, как будет выглядеть код ? я просто вывожу блок после самой статьи уже, внизу.
после тела wp-content (основного контента/статьи).

<?php if ( ! is_single ( array(1026, 1027, 1029, 1040) ) ) { ?>

здесь ваш код рекламы

<?php } ?>

В if перечисляете все id записей, для которых не должна показываться реклама.

Но такой способ неудобен тем, что каждый раз, когда Вам потребуется исключить запись, Вам придется редактировать файл.

Советую посмотреть в сторону дополнительных полей, например ACF или самостоятельно через add_meta_boxes. В таком случае Вы сможете в админке для записей добавить доп.поле, например чекбокс "не показывать рекламу" и уже в файле single.php сделаете проверку на наличие этого поля.

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
Leks007:
Возможно как то через php вывести определенный код на всех страницах в single.php шаблоне темы, кроме записей с определенными Id ?

Можно. С пом функций условий

Но лучше для них (или для др) сделать отдельный шаблон.

smurf:
Вывод рекламы в посте после определенного абзаца, з

А ТСу вообще-то надо (было) совсем другое.

И пож, код всятавляй в ббкод [code] и читай правила 3,13

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
L0
На сайте с 15.04.2015
Offline
76
#7

друзья, спасибо огромное за помощь!

пока поставил код от Esser

<?php if ( ! is_single ( array(1026, 1027, 1029, 1040) ) ) { ?>
здесь ваш код рекламы
<?php } ?>

просто и работает как надо.

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

спасибо от души, выручили очень!

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