web-dev-qa-db-ja.com

hTMLヘッドのis_home()

現在のページが頭の中からホームページであるかどうかを確認する方法はありますか?

私のstyle.phpは、スライダー内の投稿数を必要としますが、ホームページ上のみです。だから私はこのように私の投稿を数える:

<?php 
$meta_key = 'teaser';
$posts_per_page = 6;

$sql = "SELECT count(DISTINCT pm.post_id)
    FROM $wpdb->postmeta pm
    JOIN $wpdb->posts p ON (p.ID = pm.post_id)
    WHERE pm.meta_key = '$meta_key'
    AND pm.meta_value != ' '
    AND (p.post_type = 'post' OR p.post_type = 'page' OR p.post_type = 'ai1ec_event')
    AND p.post_status = 'publish'";

$count = $wpdb->get_var($sql);
if($count > $posts_per_page) {
    $count = $posts_per_page;
}
?>

<link rel="stylesheet" type="text/css" media="all" href="/wordpress/wp-content/themes/roots/style.php?tcount=<?php echo $count;?>" />

私はそれをifステートメントでラップしようとしましたが、is_home()またはis_frontpage()は機能しません。

これはstyle.phpです(それがどのように機能するかを示すために、ほんのいくつかの関連部分):

header("Content-Type: text/css"); 
$seconds_to_cache = 86400;
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");

$numTeasers = $_GET['tcount'];

/* ==========================================================================
    Slider Controls
========================================================================== */

$max = $numTeasers;
for ($s = 1; $s <= $max; $s++) {

    $next = $s+1;
    if($next == $max+1){$next = 1;}
    echo "#wdgt_slider #slide".$s.":checked ~ #controls label:nth-child(".$next."){background: url('/wordpress/wp-content/themes/roots/assets/img/slider/next.png') no-repeat scroll 0 0 transparent;display:block;position:absolute;right:0;margin:0 20px 0 0;}";

    $prev = $s-1;
    if($prev == 0){$prev = $max;}
    echo "#wdgt_slider #slide".$s.":checked ~ #controls label:nth-child(".$prev."){background: url('/wordpress/wp-content/themes/roots/assets/img/slider/prev.png') no-repeat scroll 0 0 transparent;display:block;position:absolute;float:left;margin: 0 0 0 20px;}";

    echo "#wdgt_slider #slide".$s.":checked ~ #active label:nth-child(".$s."){color:#c2b29e}";

    echo "#wdgt_slider #slide".$s.":checked ~ #slides #slide-teaser-".$s." .info, #wdgt_slider #slide".$s.":checked ~ #slides #slide-teaser-".$s."{visibility:visible;width:100%;height:auto;opacity:1;}";
}

@import url(“../adventon/style.css”);

HTMLヘッドでそのようなことをするのは悪い習慣ですか?

2

is_home()is_front_page()の両方は、ヘッダー内で、あるいはテーマテンプレートを使用している場合には何でも動作します。

おそらく、問題はこれをハードコーディングしたためです。/wordpress/wp-content/themes/roots/style.php

代わりに次のようにURLを作成してみてください。

<link rel="stylesheet" type="text/css" media="all" href="<?php echo get_stylesheet_directory_uri(); ?>/style.php?tcount=<?php echo $count;?>" />

0
WP Themes