WordPress-Suche anpassen (HowTo): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 5: | Zeile 5: | ||
= Vorangegangene(r) Prozess(e) = | = Vorangegangene(r) Prozess(e) = | ||
* [[WordPress Templates entwickeln (HowTo)]] | |||
= Arbeitsschritte (Prozess) = | = Arbeitsschritte (Prozess) = | ||
== Schritt 1: Benötigte Template-Dateien anlegen & einbinden == | |||
=== Datei für das Template der Search Results Page anlegen === | |||
* "/search.php" | |||
<syntaxhighlight lang="php"> | |||
<?php defined( 'ABSPATH' ) or die(); ?> | |||
<?php get_header(); ?> | |||
<main> | |||
<div class="row-m"> | |||
<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div> | |||
<?php function checkThumbnailUrl () { | |||
$thumbnail_url = get_the_post_thumbnail_url(); | |||
if ( ! $thumbnail_url ) { | |||
echo get_stylesheet_directory_uri() . '/assets/lpa-placeholder.png'; | |||
} else { | |||
echo $thumbnail_url; | |||
} | |||
} | |||
?> | |||
<?php | |||
$search_query = get_search_query(); | |||
$wp_query = new WP_Query( array('s' => $search_query) ); | |||
if ( $wp_query->have_posts() ) { | |||
_e("<h2>Search Results for: '".$search_query."'</h2>"."<div style='height:80px' aria-hidden='true' class='wp-block-spacer'>"."</div>"."<div class='grid-1 gap-30'>"); | |||
while ( $wp_query->have_posts() ) : | |||
$wp_query->the_post(); | |||
?> | |||
<a href="<?php the_permalink(); ?>" style="text-decoration: none;"> | |||
<p style="text-align: right; text-transform: capitalize; margin: 0;"><?php echo get_post_type(); ?></p> | |||
<h3><?php echo the_title(); ?></h3> | |||
<p><?php the_excerpt(); ?></p> | |||
</a> | |||
<?php | |||
endwhile; | |||
_e("</div>"); | |||
} else { ?> | |||
<h2>Nothing Found</h2> | |||
<div class="alert alert-info"> | |||
<p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p> | |||
</div> | |||
<?php } ?> | |||
<div style="height:160px" aria-hidden="true" class="wp-block-spacer"></div> | |||
</div> | |||
</main> | |||
<?php get_footer(); ?> | |||
</syntaxhighlight> | |||
=== Datei für Funktionen der Suche === | |||
* php/results.php | |||
* in functions.php | |||
<syntaxhighlight lang="php"> | |||
include 'php/results.php'; | |||
</syntaxhighlight> | |||
== Schritt 1: Inhaltstypen aus Suche ausschließen == | == Schritt 1: Inhaltstypen aus Suche ausschließen == | ||
=== Standard-Inhaltstypen ausschließen === | === Standard-Inhaltstypen Post und Page ausschließen === | ||
* schwierig bei den Standard-Inhaltstypen oder bei Inhaltstypen die von Plugins erstellt wurden | * schwierig bei den Standard-Inhaltstypen oder bei Inhaltstypen die von Plugins erstellt wurden | ||
| Zeile 18: | Zeile 79: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
//exclude posts and pages from search results | |||
function kb_exclude_from_search($post_type){ | function kb_exclude_from_search($post_type){ | ||
global $wp_post_types; | |||
$wp_post_types['page']->exclude_from_search = true; | |||
add_post_type_support( 'page', 'page-attributes' ); | |||
$wp_post_types['post']->exclude_from_search = true; | |||
add_post_type_support( 'post', 'post-attributes' ); | |||
} | } | ||
add_action('registered_post_type', 'kb_exclude_from_search', 10, 2 ); | add_action('registered_post_type', 'kb_exclude_from_search', 10, 2 ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Custom Post Type ausschließen === | === Custom Post Type in Plugin CPT-UI ausschließen === | ||
* möglich auch via Einstellungen im Plugin "CPT-UI" | |||
* einfach in den Einstellungen des CPT "Exclude From Search" auf "true" setzen | |||
=== Custom Post Type in den Register-Einstellungen ausschließen === | |||
* einfach in den »Attributen« den Wert <code>exclude_from_search</code> auf <code>true</code> zu setzen | * einfach in den »Attributen« den Wert <code>exclude_from_search</code> auf <code>true</code> zu setzen | ||
=== Custom Post Types in eigener Funktion ausschließen === | |||
<syntaxhighlight lang="php"> | |||
function ek_filter_search_results($query) { | |||
if (!$query->is_admin && $query->is_search) { | |||
$query->set('post_type', array('post', 'page', 'product')); | |||
} | |||
return $query; | |||
} | |||
add_filter('pre_get_posts', 'ek_filter_search_results'); | |||
</syntaxhighlight> | |||
== Schritt 2: TBD == | == Schritt 2: TBD == | ||
Aktuelle Version vom 27. April 2022, 15:40 Uhr
Allgemeines[Bearbeiten]
TBD
Vorangegangene(r) Prozess(e)[Bearbeiten]
Arbeitsschritte (Prozess)[Bearbeiten]
Schritt 1: Benötigte Template-Dateien anlegen & einbinden[Bearbeiten]
Datei für das Template der Search Results Page anlegen[Bearbeiten]
- "/search.php"
<?php defined( 'ABSPATH' ) or die(); ?>
<?php get_header(); ?>
<main>
<div class="row-m">
<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>
<?php function checkThumbnailUrl () {
$thumbnail_url = get_the_post_thumbnail_url();
if ( ! $thumbnail_url ) {
echo get_stylesheet_directory_uri() . '/assets/lpa-placeholder.png';
} else {
echo $thumbnail_url;
}
}
?>
<?php
$search_query = get_search_query();
$wp_query = new WP_Query( array('s' => $search_query) );
if ( $wp_query->have_posts() ) {
_e("<h2>Search Results for: '".$search_query."'</h2>"."<div style='height:80px' aria-hidden='true' class='wp-block-spacer'>"."</div>"."<div class='grid-1 gap-30'>");
while ( $wp_query->have_posts() ) :
$wp_query->the_post();
?>
<a href="<?php the_permalink(); ?>" style="text-decoration: none;">
<p style="text-align: right; text-transform: capitalize; margin: 0;"><?php echo get_post_type(); ?></p>
<h3><?php echo the_title(); ?></h3>
<p><?php the_excerpt(); ?></p>
</a>
<?php
endwhile;
_e("</div>");
} else { ?>
<h2>Nothing Found</h2>
<div class="alert alert-info">
<p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p>
</div>
<?php } ?>
<div style="height:160px" aria-hidden="true" class="wp-block-spacer"></div>
</div>
</main>
<?php get_footer(); ?>
Datei für Funktionen der Suche[Bearbeiten]
- php/results.php
- in functions.php
include 'php/results.php';
Schritt 1: Inhaltstypen aus Suche ausschließen[Bearbeiten]
Standard-Inhaltstypen Post und Page ausschließen[Bearbeiten]
- schwierig bei den Standard-Inhaltstypen oder bei Inhaltstypen die von Plugins erstellt wurden
- man kommt nicht ohne weiteres an den Code ran
- folgende Code-Snippet in functions.php schreiben und den Slug des auszuschließenden Inhaltstypen verändern
//exclude posts and pages from search results
function kb_exclude_from_search($post_type){
global $wp_post_types;
$wp_post_types['page']->exclude_from_search = true;
add_post_type_support( 'page', 'page-attributes' );
$wp_post_types['post']->exclude_from_search = true;
add_post_type_support( 'post', 'post-attributes' );
}
add_action('registered_post_type', 'kb_exclude_from_search', 10, 2 );
Custom Post Type in Plugin CPT-UI ausschließen[Bearbeiten]
- möglich auch via Einstellungen im Plugin "CPT-UI"
- einfach in den Einstellungen des CPT "Exclude From Search" auf "true" setzen
Custom Post Type in den Register-Einstellungen ausschließen[Bearbeiten]
- einfach in den »Attributen« den Wert
exclude_from_searchauftruezu setzen
Custom Post Types in eigener Funktion ausschließen[Bearbeiten]
function ek_filter_search_results($query) {
if (!$query->is_admin && $query->is_search) {
$query->set('post_type', array('post', 'page', 'product'));
}
return $query;
}
add_filter('pre_get_posts', 'ek_filter_search_results');
Schritt 2: TBD[Bearbeiten]
TBD
Schritt 3: TBD[Bearbeiten]
TBD
FAQ[Bearbeiten]
Frage 1[Bearbeiten]
TBD
Troubleshooting[Bearbeiten]
Lösung 1[Bearbeiten]
TBD
Nachfolgende(r) Prozess(e)[Bearbeiten]
TBD via Verlinkung zu anderem(n) HowTo(s)