webentwicklung-frage-antwort-db.com.de

So zeigen Sie eine Plugin-Funktion (Inhalt) auf der Startseite mit index.php an

Etwas fortgeschrittener Noob-Alarm: {Entschuldigung}.

Ich entwerfe eine WordPress-Site {Noch nicht aktiv}. Ich habe ein Plugin [feelbox], aber momentan wird es nur auf der einzelnen Post-Seite angezeigt. In den Plugin-Einstellungen gibt es keine Option, um es auf der Startseite [index.php] anzuzeigen. Hier ist die Haupt-Plugin-Datei - feelbox.php ist zu lang, um hier etwas zu posten. Hier ist der erste Teil davon:

> 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"];

Aber hier ist meine 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(); ?>

Ich habe versucht, die Funktion aufzurufen, indem ich diese unter der Post-Info DIV einfügte, kein Glück.

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

Jede Hilfe wäre sehr dankbar. Vielen Dank.

1
user4644682

Ihr Plugin fügt sein Feelbox-Widget durch Filtern von the_content ein:

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

Auf Ihrer Indexseite wird jedoch nicht der Inhalt, sondern nur der Titel, die Miniaturansicht, ein Auszug und die Anzahl der Kommentare angezeigt.

Der Plugin-Code, den Sie uns gezeigt haben, enthält keine Funktion print_feelbox_widget(). Existiert eine solche Funktion tatsächlich in Ihrem Plugin? (Außerdem haben Sie es nach dem schließenden Tag Ihres Post-Info-Div eingefügt und außerhalb des Endes von "the loop" (<?php endwhile; endif; ?>). Wenn es also in "the loop" verwendet werden soll, müssen Sie es nach oben verschieben. A paar Zeilen.)

Andernfalls könnten Sie Ihr Plugin hacken, um ein zusätzliches Vorlagen-Tag (the_excerpt?) Zu filtern und dieses Tag dann zu Ihrer index.php-Vorlage hinzuzufügen.

Also, in deinem Plugin:

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

Dann in index.php so etwas wie:

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

Natürlich müssen Sie mit der genauen Platzierung herumspielen.

Viel Glück.

1
Caspar