web-dev-qa-db-fra.com

Comment afficher une fonctionnalité de plugin (contenu) sur Frontpage en utilisant index.php

Alerte Noob légèrement avancée: {Désolé}.

Je conçois un site WordPress {No Active Yet}. J'ai un plugin [feelbox], mais actuellement, il ne s'affiche que sur la page d'un seul post. Les paramètres du plug-in ne permettent pas de l'afficher sur la page d'accueil [index.php]. Voici le fichier de plugin principal - feelbox.php est trop long pour être posté ici. Voici la première partie de celle-ci:

> if (!$options) {
        feelbox_add_default_options();
    } else {
        if ($options['showinpostsondefault'] == 'on') {
            add_filter('the_content', 'add_feelbox_widget_to_posts');
        }
        if (empty($options['showtweetfollowup'])) {
            $temp = array(
                'showtweetfollowup' => 'on'
            );          
            update_option('feelbox_wp_options', $temp);         
        }   
    }
}

function feelbox_add_default_options() {    
    $temp = array(
        'showsparkbar' => 'on',
        'showinpostsondefault' => 'on',
        'showtweetfollowup' => 'on',
        'validkey' => '0',
        'sortmoods' => 'off'
    );

    update_option('feelbox_wp_options', $temp);
}

function feelbox_website_and_apikey_match() {
    $options = get_option('feelbox_wp_options');
    return $options['validkey'] == '1';
}

function feelbox_get_widget_html() {
    global $wpdb;
    global $post;
    global $moods;

    if ( ( $use_centralized_site == FALSE ) || ($use_centralized_site == TRUE && feelbox_website_and_apikey_match()) ) {
        $post_id = (int)$post->ID;
        $obj = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}lydl_posts WHERE ID=" . $post_id, ARRAY_A);
        $sum = $obj["emotion_1"]+$obj["emotion_2"]+$obj["emotion_3"]+$obj["emotion_4"]+$obj["emotion_5"]+$obj["emotion_6"];

Mais voici mon index.php:

 <?php $mts_options = get_option('dualshock'); ?>
<?php get_header(); ?>
<div id="page">
    <div class="content">
        <article class="article">
            <div id="content_box">
                <?php $j = 0; if (have_posts()) : while (have_posts()) : the_post(); ?>
                    <div class="post excerpt <?php echo (++$j % 2 == 0) ? 'last' : ''; ?>">
                        <header>                        
                            <h2 class="title">
                                <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a>
                            </h2>
                        </header><!--.header-->
                        <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="nofollow" id="featured-thumbnail">
                            <?php if ( has_post_thumbnail() ) { ?> 
                                <?php echo '<div class="featured-thumbnail">'; the_post_thumbnail('featured',array('title' => '')); echo '</div>'; ?>
                            <?php } else { ?>
                                <div class="featured-thumbnail">
                                    <img width="450" height="200" src="<?php echo get_template_directory_uri(); ?>/images/nothumb.png" class="attachment-featured wp-post-image" alt="<?php the_title(); ?>">
                                </div>
                            <?php } ?>
                        </a>
                        <div class="post-content image-caption-format-1">
                            <?php echo excerpt(38);?>
                        </div>

                    </div><!--.post excerpt-->

                    <div class="post-info">

                        <span class="thecomment"><?php echo comments_number(__('No Comment','mythemeshop'), __('One Comment','mythemeshop'), '<span class="comments">'.__('Comments','mythemeshop').'</span> <span class="comm">%</span>');?></span>
                        <span class="readMore"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php _e('Read More','mythemeshop'); ?></a></span>

                    </div>
                <?php endwhile; endif; ?>   
                <span><?php if ( function_exists('print_feelbox_widget') ) { print_feelbox_widget(); } ?></span>
                <!--Start Pagination-->
                <?php if ( isset($mts_options['mts_pagenavigation']) == '1' ) { ?>
                    <?php  $additional_loop = 0; pagination($additional_loop['max_num_pages']); ?>           
                <?php } else { ?>
                    <div class="pagination">
                        <ul>
                            <li class="nav-previous"><?php next_posts_link( __( '&larr; '.'Older posts', 'mythemeshop' ) ); ?></li>
                            <li class="nav-next"><?php previous_posts_link( __( 'Newer posts'.' &rarr;', 'mythemeshop' ) ); ?></li>
                        </ul>
                    </div>
                <?php } ?>
                <!--End Pagination-->
            </div>
        </article>
        <?php get_sidebar(); ?>
<?php get_footer(); ?>

J'ai essayé d'appeler la fonction en l'insérant sous la DIV post-info, sans succès.

<?php if ( function_exists('print_feelbox_widget') ) { print_feelbox_widget(); } ?>

Toute aide serait grandement appréciée. Merci.

1
user4644682

Votre plugin insère son widget feelbox en filtrant the_content:

if ($options['showinpostsondefault'] == 'on') {
    add_filter('the_content', 'add_feelbox_widget_to_posts');
}

Mais votre page d’index n’affiche pas the_content, mais uniquement Title, miniature en vedette, extrait et nombre de commentaires.

Le code de plugin que vous nous avez montré n'inclut pas de fonction print_feelbox_widget(). Une telle fonction existe-t-elle réellement dans votre plugin? (En outre, vous l'avez inclus après la balise de fermeture de votre division post-info et en dehors de la fermeture de "the loop" (<?php endwhile; endif; ?>). Si c'est censé être utilisé dans "the loop", vous devez le déplacer quelques lignes.)

Sinon, vous pourrez peut-être pirater votre plugin pour filtrer une balise de modèle supplémentaire (the_excerpt?), Puis l'ajouter à votre modèle index.php.

Donc, dans votre plugin:

if ($options['showinpostsondefault'] == 'on') {
    add_filter('the_content', 'add_feelbox_widget_to_posts');
    add_filter('the_excerpt', 'add_feelbox_widget_to_posts');
}

Ensuite, dans index.php quelque chose comme:

<div class="post-content image-caption-format-1">
    <?php the_excerpt();?>
</div>

Vous devrez bien sûr jouer avec le placement exact.

Bonne chance.

1
Caspar