Соц. кнопки вывод и запрет вывода

Есть у меня кнопки на сайте соц сетей вывожу с помощью кода в файле functions.php вот код

add_filter( 'the_content', 'ilc_share' );
function ilc_share( $content ) {
if( !is_singular() ) return $content;
    global $post;
    $postlink  = get_permalink($post->ID);
    $posttitle = get_the_title($post->ID);
    $html = '<div style="margin:20px 10px">';
    // Twitter
    $html .= '<div><a class="twitter-share-button" href="https://twitter.com/share">Твитнуть</a>
// </div>';
    // VK-Like
    $html .= '<div><!-- Put this div tag to the place, where the Like block will be -->
<div id="vk_like"></div>
// </div>';
    // VK-Share
    $html .= '<div><!-- slaine Put this script tag to the place, where the Share button will be -->
// </div>';
    return $content . $html;
}

Сейчас кнопки показываются на обычных страницах и в постах Мне нужно показывать их только в постах подскажите пожалуйста как это сделать?

FoMurJIom
Оцените автора
Добавить комментарий

  1. tiaurus

    Этот фильтр вставляет скрипты социальных кнопок в результатт работы функции the_content, с помощью которого выводится содержимое как постов, так и страниц. Попробуйте отказаться от него и выводить социальные кнопки, вставив код вручную в файл single.php, после функции the_content.

    Ответить
    1. FoMurJIom автор

      Спасибо за ответ, более детально подошел к изучению шорткодов =) в single.php вставить код пока что не получилось так как шаблон немного не такой (еще не разобрался в нём).

      Ответить
    2. FoMurJIom автор

      Спасибо за ответ, более детально подошел к изучению шорткодов =) в single.php вставить код пока что не получилось так как шаблон немного не такой (еще не разобрался в нём).

      Ответить
  2. FoMurJIom автор

    и еще вопрос когда у Вас нажимаешь Отправить в вконтакте открывается как новая вкладка как сделать? Просто target=»_blank» или как то по другому?

    Ответить
  3. FoMurJIom автор

    Немного по разбирался нашел такой хук

    genesis_post_meta() {
    
    	global $post;
    
    	if ( is_page( $post->ID ) )
    		return;
    
    	$post_meta = '[post_categories] [post_tags]';
    	printf( '<div class="post-meta">%s</div>', apply_filters( 'genesis_post_meta', $post_meta ) );
    
    }
    

    Пытаюсь сделать тоже самое с кодом для кнопок но что то не получается. Вот код

    function soc_button() {
    if ( is_page( $post->ID ) )
    		return;
        global $post;
        $html = '<div style="margin:20px 10px;">';
        // Twitter
        $html .= '<div style="display: inline-block; position: relative; top: 10px;"><span class="pseudo-clearfy-link" class="twitter-share-button" data-uri="https://twitter.com/share" data-via="kingdomshop" data-lang="ru">Твитнуть</span>
    <script type="text/javascript">// <![CDATA[
    !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
    // ]]></script></div>';
        // VK-Like
        $html .= '<div style="display: inline-block; position: relative; top: 10px;"><!-- Put this div tag to the place, where the Like block will be -->
    <div id="vk_like"></div>
    <script type="text/javascript">// <![CDATA[
    VK.Widgets.Like("vk_like", {type: "button", height: 20});
    // ]]></script></div>';
        // VK-Share
        $html .= '<div style="display: inline-block; position: relative; top: 10px;"><!-- slaine Put this script tag to the place, where the Share button will be -->
    <script type="text/javascript">// <![CDATA[
     document.write(VK.Share.button(false,{type: "round", text: "Сохранить"}));
    // ]]></script></div></div>';
    return $post . $html;
     }
    add_shortcode ('soc', 'soc_button');
    

    Еще не разобрался до конца с php мож кто подскажет в правильном направлении хоть двигаюсь или все таки велосипед изобретаю =)

    Ответить
    1. tiaurus

      А зачем все это изобретать? Не проще ли вставить код социальных кнопок в single.php?

      Ответить
  4. FoMurJIom автор

    Вот весь код файла single.php =) куда вставлять =D

    <?php
    
    genesis();

    Разобрался немного получилось вот что

    function soc_button( ) {
    if( is_page( $post->ID ) ) return;
    $html = '<div style="margin:20px 10px;">';
    //  тут код кнопок
        return $post . $html;
    }
    add_shortcode ('soc_button', 'function soc_button');

    Тока теперь если добавлять global $post; все что ниже при загрузки с постом зарубаеться, а нужно что бы на странице блога кнопки тоже не показывались, только когда в пост заходишь.

    Ответить
    1. tiaurus

      Ищите код функции genesis — скорее всего он в functions.php. Эта функция формирует вид постов.

      Ответить
      1. FoMurJIom автор

        Да там тема построена очень хитро =) спасибо за подсказки, решение проблемы нашел тут
        тока что бы на станицах не показывалось добавил

         !is_page

        Ответить