Поддержка Проблемы и решения Виджет «линкует» весь пост

  • Решено rianovost

    (@suryano11)


    Здравствуйте уважаемые друзья! У меня опять проблема с выводом! Теперь в виджете «похожие записи».
    Грешным делом создал область виджета между абзацами в посте и выводил количеством 1 штук похожую публикацию следующим кодом :

    <div class="related_posts">
            <?php $orig_post = $post;
        global $post;
        $tags = wp_get_post_tags($post->ID);
        if ($tags) {
        $tag_ids = array();
        foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
        $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'posts_per_page'=>5, // Количество похожих записей.
        'caller_get_posts'=>1
        );
        $my_query = new wp_query( $args );
        if( $my_query->have_posts() ) {
    
        echo '<div id="relatedposts"><h3 class="reltopp">Еще по теме...</h3><ul>';
    
        while( $my_query->have_posts() ) {
        $my_query->the_post(); ?>
        <li><div class="relatedthumb"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?><img src="<?php echo first_post_image() ?>" /></a></div>
        <div class="relatedcontent">
        <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
        </div>
        </li>
        <? }
        echo '</ul></div>';
        }
        }
        $post = $orig_post;
        wp_reset_query(); ?>
            </div>

    Всё как-бы хорошо, но проблема в том, что иногда выводит 2 изображение, заданную миниатуру плюс первую картинку, по этому решил вставить другой код, в котором условие (либо миниатюра либо 1 картинка) :

    <div class="related_posts">
            <?php $orig_post = $post;
        global $post;
        $tags = wp_get_post_tags($post->ID);
        if ($tags) {
        $tag_ids = array();
        foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
        $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'posts_per_page'=>1, // Количество похожих записей.
        'caller_get_posts'=>1
        );
        $my_query = new wp_query( $args );
        if( $my_query->have_posts() ) {
    
        echo '<div id="relatedposts"><h3 class="reltopp">Еще по теме...</h3><ul>';
    
        while( $my_query->have_posts() ) {
        $my_query->the_post(); ?>
            <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail'); }
    else { ?>
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
    <?php } ?><div id="box-cel"><br><?php the_title(); ?>
    <?php
    }
    echo '</ul>';
    }
    wp_reset_query();
    }
    ?></div>

    Но тут-то проблема, что вывод посредством этого кода сделает активной ссылкой весь материал ниже виджета (((

    Подскажите пожалуйста, как выйти из этого кризиса?

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Yuri

    (@yube)

    Подскажите пожалуйста, как выйти из этого кризиса?

    Переставить <a href=.....> в нужное место. И не забыть «закрывалку» </a>, который я вообще не вижу в коде #2.

    Автор rianovost

    (@suryano11)

    Переставить в нужное место.

    Юрий, спасибо вам за то, что меня поможете по возможности и не хотел лишний раз побеспокоить, но к сожалению пытался всячески можно сказать вслепую, так, как 1)сижу с телефона и пока сворачиваю одну вкладку с кодом, чтобы посмотреть результат, всё часто вылетает из-за нехватки памяти, но все-таки удался переставить и дописать код, но в результате получил:
    1. По 2 заголовка — один ссылкой, другой без, причём один заголовок из следующих постов
    Или
    2. Огромные заголовки неописуемых размеров + линк
    Или
    3. Исчезли заголовки вовсе

    Если есть возможность, скажите пожалуйста, как исправить?
    3.

    Модератор Yuri

    (@yube)

    сижу с телефона

    Круто! Я с телефона максимум фейсбук почитать могу и односложно ответить. Не больше.

    Я же не знаю, что Вы хотите получить. Минимальный вывод как-то так

    
    <ul>
    <?php 
    while( $my_query->have_posts() ) {
        $my_query->the_post(); 
    ?>
        <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php esc_attr(get_the_title()); ?>"><?php the_title(); ?></a></li>
    <?php
    }
    ?>
    </ul>
    
    Автор rianovost

    (@suryano11)

    Круто! Я с телефона максимум фейсбук почитать могу и односложно ответить. Не больше

    Сделаю Таким макаром конечно тяжело, тем более, если кто-то звонит или придётся свернуть и потом увидишь, что вес труд равнялся нулю(память не позволяет выполнять многоцелевые задачи и происходит сброс) , это помимо прочих неудобств, но придётся пока так))) также выручают приложение с подсветкой синтаксиса

    Я же не знаю, что Вы хотите получить. Минимальный вывод как-то так

    Я хотел добавить одиночные похожие записи (1штук) по середине каждого поста и несколько штук внизу, где выводился первое изображение записи если не задана миниатюра, а если задана, то только миниатюра,и к счастью с вашей помощью получилось.
    Сейчас напишу тут инструкцию, но к сожалению, вопрос вывода текста записи на страницах записей остаётся открытым Очевидно, что, без вашей помощи никак

    Автор rianovost

    (@suryano11)

    Вопрос решил и поделюсь инструкцией, вдруг кому-то понадобится.
    Задача :
    1. Вывод похожих записей (1 штук по середине поста), несколько штук внизу
    2. Задача весьма специфическая и в просторах интернета не нашёл верного однозначного решения, а именно — выводить с миниатурой, а если нет миниатуры, то первой картинки поста.
    Трудность состоит в том, что пришлось скрестить несколько разных кодов, вплоть до условий (else) что не выводил 2 картинки (миниатюра +изображение записи)
    Ещё по скольку не возможно вставить запись по середине поста, пришлось создать область виджета и подключить функцию «поддержки php в виджетах (как это делать, погуглите)
    Итак,после создания областей виджетов если нужно выводить похожие записи по рубрикам, в виджете добавить текст :

    Вывод записей по рубрикам, вариант ном1

    <div class="sample-posts">
    <h4>Читайте также:</h4>
    	<?php
    	$categories = get_the_category($post->ID);
    	if ($categories) {
    		$category_ids = array();
    		foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
    		$args=array(
    			'category__in' => $category_ids,
    			'post__not_in' => array($post->ID),
    			'showposts' => '5',
    			'orderby' => 'rand',
    			'ignore_sticky_posts' => '1',
    			'no_found_rows' => true,
    			'cache_results' => false
    		);
    		$my_query = new wp_query($args);
    		if( $my_query->have_posts() ) {
    			echo '<ul>';
    			while ($my_query->have_posts()) {
    				$my_query->the_post();
    				?>
    				<li><div class="relatedthumb"><a href="<?php the_permalink() ?>"><?php the_title(); ?>
    		<?php if ( has_post_thumbnail() ) { the_post_thumbnail(); }
    else { ?>
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
    <?php } ?></a></li>
    		<?php
    			}
    			echo '</ul>';
    		}
    		wp_reset_query();
    	}
    	?>
    </div>

    По рубрикам вариант 2

    <div class="sample-posts">
    
    	<?php
    	$categories = get_the_category($post->ID);
    	if ($categories) {
    		$category_ids = array();
    		foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
    		$args=array(
    			'category__in' => $category_ids,
    			'post__not_in' => array($post->ID),
    			'showposts' => '6',
    			'orderby' => '',
    			'ignore_sticky_posts' => '1',
    			'no_found_rows' => true,
    			'cache_results' => false
    		);
    		$my_query = new wp_query($args);
    		if( $my_query->have_posts() ) {
    			echo '<div id="relatedposts"><h3 class="reltopp">ЧИТАЙТЕ ТАКЖЕ ...</h3><ul>';
    			while ($my_query->have_posts()) {
    				$my_query->the_post();
    				?>
    				<li><div class="relatedthumb"><a href="<?php the_permalink() ?>"><?php the_title(); ?>
    		<?php if ( has_post_thumbnail() ) { the_post_thumbnail(); }
    else { ?>
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
    <?php } ?></a></div>
     <div class="relatedcontent">
        <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"></a></h3>
        </div>
    </li>
    		<?php
    			}
    			echo '</ul>';
    		}
    		wp_reset_query();
    	}
    	?>
    </div>

    Вывод записей по рубрикам вариант 3

    <div class="related_posts">
    <h3>Похожие записи</h3>
    <?php
    $categories = get_the_category($post->ID);
    if ($categories) {
     $category_ids = array();
     foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
     $args=array(
     'category__in' => $category_ids,
     'post__not_in' => array($post->ID),
     'showposts'=>8,
     'caller_get_posts'=>1);
     $my_query = new wp_query($args);
     if( $my_query->have_posts() ) {
     echo '<ul>';
     while ($my_query->have_posts()) {
     $my_query->the_post();
    ?>
    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php if ( has_post_thumbnail() ) { the_post_thumbnail(); }
    else { ?>
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
    <?php } ?><div id="box-cel"><br><?php the_title(); ?></a></li>
    <?php
    }
    echo '</ul>';
    }
    wp_reset_query();
    }
    ?></div>

    Вывод записей по меткам

      <div class="postnet">
            <?php $orig_post = $post;
        global $post;
        $tags = wp_get_post_tags($post->ID);
        if ($tags) {
        $tag_ids = array();
        foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
        $args=array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post->ID),
        'posts_per_page'=>5, // Количество похожих записей.
        'caller_get_posts'=>1
        );
        $my_query = new wp_query( $args );
        if( $my_query->have_posts() ) {
    
        echo '<div id="relatedposts"><h3 class="reltopp">ЧИТАЙТЕ ТАКЖЕ...</h3><ul>';
    
        while( $my_query->have_posts() ) {
        $my_query->the_post(); ?>
        	<li><div class="relatedthumb"><a href="<?php the_permalink() ?>"><?php the_title(); ?>
    		<?php if ( has_post_thumbnail() ) { the_post_thumbnail(); }
    else { ?>
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
    <?php } ?></a></div>
     <div class="relatedcontent">
        <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"></a></h3>
        </div>
    </li>
    		<?php
    			}
    			echo '</ul>';
    		}
    		wp_reset_query();
    	}
    	?>
    </div>

    Следующая задача вывести записи из определённой рубрики с такими же условиями

    Автор rianovost

    (@suryano11)

    Забыл нажать «ответить и пометить решенной»

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Виджет «линкует» весь пост» закрыта для новых ответов.