wake-up-neo.net

is_home () in HTML head

Gibt es eine Möglichkeit zu überprüfen, ob die aktuelle Seite die Startseite im Kopf ist?

Mein style.php benötigt die Anzahl der Beiträge im Slider, aber nur auf der Homepage. Also zähle ich meine Posts so:

<?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;?>" />

Ich habe versucht, es in eine if-Anweisung zu packen, aber is_home() oder is_frontpage() funktionieren nicht.

Dies ist die style.php (Nur einige relevante Teile, um zu zeigen, wie es funktioniert):

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”);

Ist es eine schlechte Praxis, solche Dinge im HTML-Kopf zu tun?

2

sowohl is_home() als auch is_front_page() funktionieren in der Kopfzeile oder wenn Sie eine Designvorlage verwenden.

Das Problem liegt höchstwahrscheinlich daran, dass Sie Folgendes fest codiert haben: /wordpress/wp-content/themes/roots/style.php

Versuchen Sie stattdessen, Ihre URL wie folgt zu erstellen:

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

0
WP Themes