Frage

Ok das ist ein wenig komplexer. Ich erstelle ein Plugin, und will die Kategorie-ID aus der Post-Seite finden.

Das ist der einfache Teil.

Was es komplex macht, ist, ich es (begann in einer ‚template_redirect‘ action) innerhalb eines ob_start tue, als ich die ganze Seite bearbeiten möchten, bevor sie an den Browser zurückgegeben. Wieder das ist leicht genug, um von der ob_start Funktion.

Mit der ID zurückgegeben Ich mag einige PHP in einem SQL-Feld gespeichert bewerten. Ich versuche, dies innerhalb der ob_start Funktion zu tun

$tui_cifp_insertvalue = tui_cifp_evaluate_html($tui_cifp_insertvalue);

Dies nennt dies

function tui_cifp_evaluate_html($string) {
return preg_replace_callback("/(<\?php|<\?|< \?php)(.*?)\?>/si",'EvalBuffer', $string);
}

Was wiederum Anrufe

function EvalBuffer($string) {
ob_start();
eval("$string[2];");
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}

Und die php ich zu bewerten versuchen ist.

<?php tui_findPostThumbIMG([categoryID],100,100,'categoryintro-thumbnail','','',''); ?>

Das alles funktioniert außerhalb der ob_start Routine, aber hier auch einfache php funktioniert nicht. Aus dem ob_start Routine die Plugin-Breaks und eine leere Seite zurückkehrt.

Also dachte ich, ich könnte die PHP vor Beginn der ob_start auswerten und das Ergebnis durch eine globale Variable übergeben. Das funktioniert, aber an dem Punkt, dies beginnt die folgende Verwendung der Kategorie-ID ist nicht verfügbar.

if ( strpos($_SERVER['REQUEST_URI'], 'wp-admin') === false ) {

global $holdvalue;

$tui_cifp_insertvalue = get_option('tui_cifp_insertvalue');

$categories = get_the_category();
$categoryID = $categories[0]->cat_ID;

$tui_cifp_insertvalue = str_replace("[categoryID]", $categoryID, $tui_cifp_insertvalue);

$holdvalue = tui_cifp_evaluate_html($tui_cifp_insertvalue);

add_action('template_redirect','tui_cifp_ob_start'); //

}

Die ob_start Funktion

function tui_cifp_ob_start()
{

ob_start('tui_cifp_templatefilter');

}

Ok, ich bin ratlos ... irgendwelche Ideen?

ich entweder brauchen einen Haken zu finden, die zur richtigen Zeit ausgeführt wird, so dass ich den Zugriff auf die Kategorie-ID haben, oder ich muss herausfinden, wie die PHP während der ob_start zu bewerten.

Oh ... Ich glaube, ich sollte sagen. Was ich tun möchte, ist ein Tag auf einem Wordpress-Seite mit einigen anderen Informationen in einem String gespeichert ersetzen, sondern müssen diese einmal in der Lage sein, die ganze Seite zu tun, wenn gezogen wird.

Danke Stephen

PS Ich habe dies ohne eine Antwort auf den Wordpress-Foren gefragt. Sorry für die Quer Posting aber ich bin ein wenig verzweifelt.

War es hilfreich?

Lösung 2

Danke OIS, ich schätze Ihre diese Lösung vorschlägt. Es ist jedoch das Gleiche tun, wie ich es bisher getan haben. Ich denke anders strukturiert.

Es hat jedoch dazu führen, mich auf dem Problem von einem anderen Interessenten zu suchen.

Was mir klar wurde, dass get_the_category() einen Parameter benötigt und war nicht eine Kategorie bekommen, weil es die Post-ID war, die nicht verfügbar war. Ich löste das Problem, indem Sie das Setup vorne tun wie so.

function tui_cifp_ob_start()
{

    global $tui_cifp_message, $tui_cifp_div, $wp_query;

    if (is_single()) 
    {

        $tui_cifp_div = get_option('tui_cifp_div');

        if ($tui_cifp_div !== '') 
        {

        $thePostID = $wp_query->post->ID;
        $categories = get_the_category($thePostID); 
        $categoryID = $categories[0]->cat_ID;

        $tui_cifp_message = get_option('tui_cifp_message');

        $categoryTitle = $categories[0]->cat_name;
        $categoryDescription = $categories[0]->category_description;

        $tui_cifp_message = str_replace("[categoryID]", $categoryID, $tui_cifp_message);
        $tui_cifp_message = str_replace("[categoryTitle]", $categoryTitle, $tui_cifp_message);
        $tui_cifp_message = str_replace("[categoryDescription]", $categoryDescription, $tui_cifp_message);
        $tui_cifp_message = $tui_cifp_div.$tui_cifp_message;

        $tui_cifp_message = tui_cifp_evaluate_html($tui_cifp_message);

        }

        ob_start('tui_cifp_templatefilter');

    }

}

Vielen Dank noch einmal.

Andere Tipps

Im zu eval nicht teilweise, aber dies scheint zu funktionieren, mit oder ohne die Ausgabepufferung am Ende ...

function tui_findPostThumbIMG()
{
 echo "hey hey\n";
}

ob_start();
$categoryID = 10;
$tui_cifp_insertvalue = "<?php tui_findPostThumbIMG([categoryID],100,100,'categoryintro-thumbnail','','',''); ?>";
$tui_cifp_insertvalue = str_replace("[categoryID]", $categoryID, $tui_cifp_insertvalue);
$tui_cifp_insertvalue = tui_cifp_evaluate_html($tui_cifp_insertvalue);
echo $tui_cifp_insertvalue;
ob_end_flush();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top