Question

Mon plug-in est le gel de l'exécution de la page au point où il appelle les fonctions ci-dessous.

J'ai deux problèmes ...

1) Comment puis-je recoder la fonction de sorte que s'il y a une erreur, le plug-in ne s'arrête pas la page de chargement, mais plutôt, renvoie un message d'erreur?

2) Comment puis-je des commentaires que l'erreur pourrait être? Son gel juste, mais pas sortir l'erreur.

function rseo_get_seo($check, $post){
 //return false;
    switch ($check)
    {
    case "h1": return rseo_doTheParse('h1', $post);
    case "h2": return rseo_doTheParse('h2', $post);
    case "h3": return rseo_doTheParse('h3', $post);
    case "img-alt": return rseo_doTheParse('img-alt', $post);
    }
}

function rseo_doTheParse($heading, $post)
{
    $content = $post->post_content;
    if($content=="") return false;
    $keyword = trim(strtolower(rseo_getKeyword($post)));
    @$dom = new DOMDocument;
    @$dom->loadHTML(strtolower($post->post_content));
    $xPath = new DOMXPath(@$dom);
    switch ($heading)
        {
        case "img-alt": return $xPath->evaluate('boolean(//img[contains(@alt, "'.$keyword.'")])');
        default: return $xPath->evaluate('boolean(/html/body//'.$heading.'[contains(.,"'.$keyword.'")])');
        }
}

Voici ma tentative de changer la 2ème fonction avec prise d'essai, mais je reçois une erreur fatale sur un plugin activation ...

function rseo_doTheParse($heading, $post){
try { //I get a FATAL error here. unexpected '{'
    $content = $post->post_content;
    if($content=="") return false;
    $keyword = trim(strtolower(rseo_getKeyword($post)));
    @$dom = new DOMDocument;
    @$dom->loadHTML(strtolower($post->post_content));
    $xPath = new DOMXPath(@$dom);
    switch ($heading)
        {
        case "img-alt": return $xPath->evaluate('boolean(//img[contains(@alt, "'.$keyword.'")])');
        default: return $xPath->evaluate('boolean(/html/body//'.$heading.'[contains(.,"'.$keyword.'")])');
        }
    }
    catch (Exception $e)
    {
        echo 'Exception caught: ',  $e->getMessage(), "\n";
    }
}
Était-ce utile?

La solution

Cette ligne est erroné:

$xPath = new DOMXPath(@$dom);

Devrait être ceci:

$xPath = new DOMXPath($dom);

Autres conseils

Pour le débogage vous pouvez également utiliser la syntaxe suivante au lieu de try / catch:

if (!$x) {
   throw new Exception('Division by zero.');
}
else return 1/$x;

ou utilisez le bon vieux var_dump ($ x); qui vous dit souvent assez pour vous y aller à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top