2010-11-22 6 views
0

Hallo Ich bin dran, eine Themenoption in WordPress hinzuzufügen, um die entsprechende Vorlage automatisch bestimmten Kategorien und einzelnen Bildvorlagen zuzuweisen.Wie man Themenoptionen mit in_category verwendet

Ich habe meine Theme-Option gebaut, wo ein Benutzer Kategorienummern getrennt mit einem Koma eingeben kann und ich habe die single.php Vorlage geändert, um zu überprüfen, ob der einzelne Beitrag in dieser Kategorie ist, aber die Vorlage nicht abgeholt wird.

<?php 
$catArr = get_option('scp_gallery_cats'); 

if (in_category(array($catArr))) 
{ 
    include (TEMPLATEPATH . '/single-image.php'); 
} 
else { 
    include (TEMPLATEPATH . '/single-other.php'); 
} 
?> 

Jede Hilfe wäre

Antwort

0

Versuchen Sie, eine print_r ($ catArr) geschätzt werden; ist die Komma-getrennte Liste der Kategorien eine Zeichenfolge, oder ist jede Kategorie ein separater Wert im Array?

Wenn $ catArr tatsächlich eine Zeichenfolge ist und kein Array, werden Sie so etwas wie zu tun haben:

$catArr = explode(",", $catArr); 

In Anbetracht der unten Kommentar, ich glaube, Sie haben zunächst den Wert in ein Array zu brechen; probiere folgenden Code:

<?php 
$catArr = get_option('scp_gallery_cats'); 
$catArr = explode(",", $catArr); //break the string into array keys! 
if (in_category($catArr)) 
{ 
    include (TEMPLATEPATH . '/single-image.php'); 
} 
else { 
    include (TEMPLATEPATH . '/single-other.php'); 
} 
?> 

Hoffe, das hilft!

+0

Hallo Aendrew, Vielen Dank, print_r auf folgende Weise Das einzige Problem ist, dass die Ausgabe von print_r an die Vorlage ausgegeben wird auch vor – Adam

+0

Eigentlich kratzen, dass sie nicht nur seine Arbeit, die if-Anweisung übersprungen, ich werde wieder versuchen, erkundet. Die Werte werden in den Themenoptionen wie "3,4,5,6,7,8" gespeichert, die gerade als Text eingegeben werden. – Adam

+0

Editierte Antwort, um das überarbeitete Code-Segment aufzunehmen. – aendrew

1
<?php 
global $options; 
global $post; 
ob_start(); 
$catArr = print_r(get_option('scp_gallery_cats'),false); 
ob_end_clean(); 
if (in_category('1')) { 
    include(TEMPLATEPATH.'/single-image.php.php'); 
} elseif (in_category (array(($catArr))){ 
    include(TEMPLATEPATH.'/single_other.php.php'); 
} else { 
    include(TEMPLATEPATH.'/single_default.php'); 
} 
?> 
Verwandte Themen