web-dev-qa-db-ja.com

Index.phpを使ってフロントページにプラグイン関数(コンテンツ)を表示する方法

やや高度なNoobアラート:{すみません}。

私はWordPressサイト{No Active Yet}を設計しています。私はプラグイン[feelbox]を持っていますが、現在それは単一の投稿ページにのみ表示されます。フロントページに表示するためのオプションはありません[index.php]。これがメインのプラグインファイルです - feelbox.phpはここに投稿するには長すぎます。これが最初の部分です。

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

しかし、これが私の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(); ?>

私はpost-info DIVの下にこれを挿入して関数を呼び出そうとしました。

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

任意の助けは大歓迎です。ありがとう。

1
user4644682

あなたのプラグインはthe_contentをフィルタリングすることによって自身のfeelboxウィジェットを挿入します:

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

しかし、あなたのインデックスページはthe_contentを表示せず、Title、注目のサムネイル、抜粋、そしてコメント数だけを表示します。

あなたが私たちに示したプラグインコードはprint_feelbox_widget()関数を含みません。そのような機能は実際にあなたのプラグインに存在しますか? (また、post-info divの終了タグの後、そして "the loop"の終了の外側(<?php endwhile; endif; ?>)の外側に含めたので、 "the loop"で使用することを意図している場合はカップルライン。)

それ以外の場合は、プラグインをハックして追加のテンプレートタグ(the_excerpt?)をフィルタリングしてから、そのタグをindex.phpテンプレートに追加することができます。

だから、あなたのプラグインで:

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

それから、index.phpでは以下のようになります。

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

もちろん、正確な配置で試してみる必要があります。

がんばろう。

1
Caspar