it-swarm.com.de

Überprüfe ob Tag, Kategorie oder Autor auf archive.php

ich erstelle ein WordPress-Theme und möchte eine einzige archive.php-Seite verwenden, um Beiträge unter einem bestimmten Autor, einer Kategorie oder einem Tag zu präsentieren. Jetzt mache ich es so:

 if (is_author())
  {

  }

  if (is_category())
  {

  }

  if (is_tag())
  {

  }

Ich weiß, dass ich das in mehr Vorlagen aufteilen kann, aber ich möchte mich nicht wiederholen und ich bevorzuge es im Allgemeinen, es in einer einzelnen PHP-Datei zu tun. Meine Frage lautet also:

Wie kann ich entweder die Kategorie, das Tag oder den Autor in jedem dieser Ifs ermitteln? Es scheint, dass ich für den Autor etwas verwenden kann wie:

$author = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));

und für die Kategorie:

get_query_var( 'cat');

Aber ist das wirklich der richtige Weg? Was ist ein sicherer Weg, um diese Informationen unabhängig von Permalinks zu erhalten?

1
SpyrosP

sie können es so verwenden, wie Sie es gepostet haben. Das ist sicher und würde die Arbeit gut machen:

if (is_author())
{
    $author = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
}

elseif (is_category())
{
    //this will work in categories tags or custom taxonomy
    $term_slug = get_query_var( 'term' );
    $taxonomyName = get_query_var( 'taxonomy' );
    $current_term = get_term_by( 'slug', $term_slug, $taxonomyName );
}

else(is_tag())
{
    //this will work in categories tags or custom taxonomy
    $term_slug = get_query_var( 'term' );
    $taxonomyName = get_query_var( 'taxonomy' );
    $current_term = get_term_by( 'slug', $term_slug, $taxonomyName );
}

Jetzt würde ich, wie gesagt, diese Methode nur empfehlen, wenn dieses Thema nicht für die Öffentlichkeit freigegeben wird und für Ihren eigenen Gebrauch ist. Wenn dieses Thema freigegeben werden soll, würde ich meinen Code zur Vereinfachung in separate Dateien aufteilen Anpassung und Einhaltung der Themenstrukturstandards.

2
Bainternet