So zeigen Sie Nicht-Seite / Post-Inhalt an

Ich habe einen benutzerdefinierten Twitter-Stream auf meiner Website.

Ich möchte für jeden Tweet einen Permalink haben, der zu einer Seite führt, auf der nur der Tweet angezeigt wird – kein anderer Inhalt -, der von meinem benutzerdefinierten Thema umgeben ist.

Im Idealfall würde ich WordPress dazu bringen, eine Seitenvorlage für eine bestimmte URL anzuzeigen (etwas wie / tweet / ), aber ich möchte keine Seite erstellen, weil sie im Hauptmenü erscheint.

Ich bin glücklich, ein Plugin zu schreiben, aber mein Google-fu schlägt fehl, mir zu helfen, herauszufinden, wie man nur den Inhalt dieses Plugins auf einer Seite anzeigt.

Solutions Collecting From Web of "So zeigen Sie Nicht-Seite / Post-Inhalt an"

Sie können dies tun, indem Sie sozusagen eine “falsche Seite” erstellen, anstatt die Seite in Ihrem Dashboard-Bereich unter Pages -> Add New hinzufügen zu erstellen, dann eine Vorlage aus Seitenattributen auszuwählen oder eine Vorlage zu erstellen, die dem Slug oder der ID entspricht Als page-{slug}.php oder page-{id}.php Sie stattdessen eine Kombination von Rewrite-Regeln, kombiniert mit dem Einhängen in eine Aktion template_redirect , um das gewünschte Ergebnis zu erzielen.

Sie können ein genaues Beispiel dafür in meiner Antwort auf diese Frage sehen .

Ich werde in meine Schnipsel unten kopieren, aber die vollständige Erklärung sollte in meiner Antwort oben gelesen werden.

Schritt 1:

 add_action('init', 'fake_page_rewrite'); function fake_page_rewrite(){ global $wp_rewrite; //set up our query variable %fake_page% which equates to index.php?fake_page= add_rewrite_tag( '%fake_page%', '([^&]+)'); //add rewrite rule that matches /blog/page/2, /blog/page/3, /blog/page/4, etc.. add_rewrite_rule('^blog/page/?([0-9])?','index.php?fake_page=blog&paged=$matches[1]','top'); //add rewrite rule that matches /blog add_rewrite_rule('^blog/?','index.php?fake_page=blog','top'); //add endpoint, in this case 'blog' to satisfy our rewrite rule /blog, /blog/page/ etc.. add_rewrite_endpoint( 'blog', EP_PERMALINK | EP_PAGES ); //flush rules to get this to work properly $wp_rewrite->flush_rules(); } 

Schritt 2:

 add_action('template_redirect', 'fake_page_redirect'); function fake_page_redirect(){ global $wp; //retrieve the query vars and store as variable $template $template = $wp->query_vars; //pass the $template variable into the conditional statement and //check if the key 'fake_page' is one of the query_vars held in the $template array //and that 'blog' is equal to the value of the key which is set if ( array_key_exists( 'fake_page', $template ) && 'blog' == $template['fake_page'] ) { //if the key 'fake_page' exists and 'blog' matches the value of that key //then return the template specified below to handle presentation include( get_template_directory().'/your-template-name-here.php' ); exit; } } 

Hinweis: Einige Optimierungen sind möglicherweise erforderlich, um einzelne Tweet-IDs zuzuordnen, aber wir müssten Ihren Code sehen, der sich auf die Tweets bezieht.

Diese Snippets gehen in Ihre functions.php Datei. Natürlich sollten Sie einen der Parameter ändern, die sonst Ihren gewünschten Endpunkt erreichen würden . Also, wo Sie sehen, blog wird whatever-you-want usw. Der Name der Vorlage im zweiten Snippet sollte Ihrer gewünschten Vorlage entsprechen.

Ich entschied mich dafür, eine Page zu verwenden und zu prüfen, wie sie von Exclude Pages ausgeblendet wird.

Das habe ich mir (in functions.php ) functions.php :

 add_filter('get_pages','mytheme_exclude_pages'); function mytheme_exclude_pages ($pages) { $showPages = array(); foreach ($pages as $page) { if (!in_array($page->post_name, array('no-show', 'shy-page'))) { $showPages[] = $page; } } return $showPages; }