[Wordpress] Banner tussen nieuws plaatsen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • dannyvdb1997
  • Registratie: Januari 2012
  • Laatst online: 23:30
Beste Tweakers,

Ik wil tussen het recente nieuws van mijn website een banner tonen. Laat ik zeggen, na tien berichten moet een banner komen. Met het thema dat ik gebruik gaat het recente nieuws op de homepage via widgets. Ik heb de code hiervan, maar het is voor mij niet heel duidelijk of ik dit zo kan doen. Ook via Google wordt ik niet veel wijzer. Een banner kan een Google Adsense code zijn, maar ook een adverteerder die door de organisatie binnen wordt gehaald.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
/**
 * Plugin Name: Home Recent Posts Widget
 */

add_action( 'widgets_init', 'resport_recent_load_widgets' );

function resport_recent_load_widgets() {
    register_widget( 'resport_recent_widget' );
}

class resport_recent_widget extends WP_Widget {

    /**
     * Widget setup.
     */
    function resport_recent_widget() {
        /* Widget settings. */
        $widget_ops = array( 'classname' => 'resport_recent_widget', 'description' => __('A widget that displays a specified number of posts in a list.', 'resport_recent_widget') );

        /* Widget control settings. */
        $control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'resport_recent_widget' );

        /* Create the widget. */
        $this->WP_Widget( 'resport_recent_widget', __('Resportsive: Home Recent Posts', 'resport_recent_widget'), $widget_ops, $control_ops );
    }

    /**
     * How to display the widget on the screen.
     */
    function widget( $args, $instance ) {
        extract( $args );

        /* Our variables from the widget settings. */
        $title = $instance['title'];
        $post_num = $instance['post_num'];

        /* Before widget (defined by themes). */
        echo $before_widget;

        /* Display the widget title if one was input (before and after defined by themes). */

        ?>



                <h2 class="section"><span class="section"><?php echo $title; ?></span></h2>

            <ul class="recent">
            <?php $recent = new WP_Query('showposts=' . $post_num . ' '); while($recent->have_posts()) : $recent->the_post();?>
            <li>
            <?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) { /* if post has a thumbnail */ ?>
            <div class="home-story-cat">
                <div class="img-contain">
                    <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>" class="img-shadow"><?php the_post_thumbnail('small-thumb'); ?></a>
                </div><!--img-contain-->
                <div class="story-text">
                    <!-- <div class="cat-small"><?php // the_category(); ?></div> -->
                    <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                    <p><?php echo excerpt(22); ?></p>
                </div><!--story-text-->
            </div><!--home-story-cat-->
            <?php } else { ?>
            <div class="home-story-cat">
                <div class="story-text-noimg">
                    <div class="cat-small"><?php the_category(); ?></div>
                    <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                    <p><?php echo excerpt(22); ?></p>
                </div><!--story-text-->
            </div>
            <?php } ?>
            </li>
            <?php endwhile; ?>
            </ul>


        <?php

        /* After widget (defined by themes). */
        echo $after_widget;
    }

    /**
     * Update the widget settings.
     */
    function update( $new_instance, $old_instance ) {
        $instance = $old_instance;

        /* Strip tags for title and name to remove HTML (important for text inputs). */
        $instance['title'] = strip_tags( $new_instance['title'] );
        $instance['post_num'] = strip_tags( $new_instance['post_num'] );


        return $instance;
    }


    function form( $instance ) {

        /* Set up some default widget settings. */
        $defaults = array( 'title' => 'More Stories', 'post_num' => 6);
        $instance = wp_parse_args( (array) $instance, $defaults ); ?>

        <!-- Widget Title: Text Input -->
        <p>
            <label for="<?php echo $this->get_field_id( 'title' ); ?>">Name of category #1:</label>
            <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:90%;" />
        </p>

        <!-- Number of posts -->
        <p>
            <label for="<?php echo $this->get_field_id( 'post_num' ); ?>">Number of posts:</label>
            <input id="<?php echo $this->get_field_id( 'post_num' ); ?>" name="<?php echo $this->get_field_name( 'post_num' ); ?>" value="<?php echo $instance['post_num']; ?>" style="width:90%;" />
        </p>


    <?php
    }
}

?>,


Is er iemand die mij meer informatie hierover kan geven?

Met vriendelijke groet,
dannyvdb1997

Acties:
  • 0 Henk 'm!

  • kaassouffle
  • Registratie: Januari 2002
  • Laatst online: 12-10 20:28

kaassouffle

Medewerker v/d Maand

Hoeveel berichten laat je nu zien op je homepage met deze widget ?

Wil je 1 splitsing maken, 10 posts - banner - 10 posts ?
Of wil je 'na elke 10 posts een banner' ?

Tweede widget proberen toe te voegen aan je homepage? widget 1 met 10 posts - banner - widget 2
of
Widget aanpassen naar 2 loops met banner er tussen. Tweede loop met een post offset van eerste loop.

[ Voor 4% gewijzigd door kaassouffle op 05-08-2015 19:41 ]


Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Wat kaassouffle ook min of meer zegt. Het is me niet helemaal duidelijk wat je beoogde / gewenste resultaat is.
Moet het in een widget blijven, of wil je het gewoon op een pagina publiceren, en wil je elke tien berichten een banner, of alleen na de eerste tien?
Kortom, waar wil je naar toe?

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

  • dannyvdb1997
  • Registratie: Januari 2012
  • Laatst online: 23:30
kaassouffle schreef op woensdag 05 augustus 2015 @ 19:41:
Hoeveel berichten laat je nu zien op je homepage met deze widget ?

Wil je 1 splitsing maken, 10 posts - banner - 10 posts ?
Of wil je 'na elke 10 posts een banner' ?

Tweede widget proberen toe te voegen aan je homepage? widget 1 met 10 posts - banner - widget 2
of
Widget aanpassen naar 2 loops met banner er tussen. Tweede loop met een post offset van eerste loop.
Excuses als ik het niet voldoende beschreven heb. Het liefste wil ik inderdaad een splitsing maken. Er worden 25 berichten getoond op de homepage. Wat ik wil bereiken is dat er na de eerste tien berichten een banner/advertentie getoond wordt.

10 posts - banner - 15 posts

Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Oeps, sorry, ik had er niet meer aan gedacht om te reageren.

get_post() is je vriend
https://codex.wordpress.org/Template_Tags/get_posts
Met posts_per_page geef je het aantal te publiceren berichten aan, en met offset het aantal berichten dat overgeslagen moet worden.
Je doet dus twee keer hetzelfde truukje (boven en onder de banner), alleen de eerste keer toon je tien berichten en de tweede keer meer, en sla je de eerste tien over.


Eerst publiceer je gewoon de eerste 10 berichten:

code:
1
2
3
4
5
6
7
8
9
$args = array( 'posts_per_page' => 10 );
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
        <div class="post-section">
        <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
        <?php the_content(); ?>
        </div><!-- post-section -->
<?php endforeach; 
wp_reset_postdata();?>



Hier komt je banner


Daarna met een offset de rest:
Bijvoorbeeld
code:
1
2
3
4
5
6
7
8
9
$args = array( 'posts_per_page' => 15, 'offset'=> 10 );
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
        <div class="post-section">
        <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
        <?php the_content(); ?>
        </div><!-- post-section -->
<?php endforeach; 
wp_reset_postdata();?>


Werking:
Met get_post pas je met een query de gebruikelijke loop als het ware aan naar je eigen wensen.
Vervolgens volg je de normale procedure binnen de loop (the_title, the_content etc. Alles wat normaal binnen de loop kan, kan hier nu ook)
En tenslotte herstel je de normale loop weer d.m.v. wp_reset_postdata().

Zelf zou ik het aanroepen van de post blokjes waarschijnlijk in een eigen functie zetten, omdat je nu twee keer (boven en onder de banner) nagenoeg hetzelfde doet. Maar voor de duidelijkheid heb ik het nu even zo gedaan.

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou de widget functie aanpassen. Het zijn eigenlijk maar 4 regels code die je toevoegt.

In regel 25 (net voor de posts loop) maak je een nieuwe variabele $i aan met de waarde 1. Zo kun je bijhouden hoeveel posts je al hebt geprint. Je begint met 1 omdat de banner onder de post komt, je hebt dan dus al 1 post geprint.
In regel 47 controleer je of de rest bij deling door 10 gelijk aan 0 is. Dit is alleen bij getallen die deelbaar zijn door 10. Dus 10, 20, 30 etc. Zo kun je er dus voor zorgen dat er steeds na 10 posts een banner wordt getoond. In dezelfde regel verhoog je ook steeds meteen $i met 1 (post-increment, dus na het controleren).

Ik heb de code niet getest maar dit zou zo moeten werken. Je hoeft alleen de code voor de banner aan te passen op regel 48.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php

/**
 * How to display the widget on the screen.
 */
function widget( $args, $instance ) {
    extract( $args );

    /* Our variables from the widget settings. */
    $title = $instance['title'];
    $post_num = $instance['post_num'];

    /* Before widget (defined by themes). */
    echo $before_widget;

    /* Display the widget title if one was input (before and after defined by themes). */

    ?>



    <h2 class="section"><span class="section"><?php echo $title; ?></span></h2>

    <ul class="recent">
        <?php $i = 1; $recent = new WP_Query('showposts=' . $post_num . ' '); while($recent->have_posts()) : $recent->the_post();?>
            <li>
                <?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) { /* if post has a thumbnail */ ?>
                    <div class="home-story-cat">
                        <div class="img-contain">
                            <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>" class="img-shadow"><?php the_post_thumbnail('small-thumb'); ?></a>
                        </div><!--img-contain-->
                        <div class="story-text">
                            <!-- <div class="cat-small"><?php // the_category(); ?></div> -->
                            <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                            <p><?php echo excerpt(22); ?></p>
                        </div><!--story-text-->
                    </div><!--home-story-cat-->
                <?php } else { ?>
                    <div class="home-story-cat">
                        <div class="story-text-noimg">
                            <div class="cat-small"><?php the_category(); ?></div>
                            <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                            <p><?php echo excerpt(22); ?></p>
                        </div><!--story-text-->
                    </div>
                <?php } ?>
                <?php if($i++ % 10 == 0): ?>
                    <div class="een-banner">Ik ben een banner</div>
                <?php endif; ?>
            </li>
        <?php endwhile; ?>
    </ul>


    <?php

    /* After widget (defined by themes). */
    echo $after_widget;
}

?>

Acties:
  • 0 Henk 'm!

  • dannyvdb1997
  • Registratie: Januari 2012
  • Laatst online: 23:30
Verwijderd schreef op zondag 09 augustus 2015 @ 02:07:
Ik zou de widget functie aanpassen. Het zijn eigenlijk maar 4 regels code die je toevoegt.

In regel 25 (net voor de posts loop) maak je een nieuwe variabele $i aan met de waarde 1. Zo kun je bijhouden hoeveel posts je al hebt geprint. Je begint met 1 omdat de banner onder de post komt, je hebt dan dus al 1 post geprint.
In regel 47 controleer je of de rest bij deling door 10 gelijk aan 0 is. Dit is alleen bij getallen die deelbaar zijn door 10. Dus 10, 20, 30 etc. Zo kun je er dus voor zorgen dat er steeds na 10 posts een banner wordt getoond. In dezelfde regel verhoog je ook steeds meteen $i met 1 (post-increment, dus na het controleren).

Ik heb de code niet getest maar dit zou zo moeten werken. Je hoeft alleen de code voor de banner aan te passen op regel 48.

CODE
Bedankt. Ik ga ermee aan de slag :)

[ Voor 52% gewijzigd door dannyvdb1997 op 12-08-2015 10:27 ]


  • koekiemonster
  • Registratie: Maart 2001
  • Laatst online: 12-10 17:37

koekiemonster

want a cookie

Of een simpele teller, staat deze op 10, dan de banner. Hierna weer gewoon verder met het tonen van posts.

[webhero.nl]

Pagina: 1