WordPress PHP snippets
En rodet samling af små WordPress snippets.
En side som er rigtig god at finde små Wordpress snippets på er: http://wpsnipp.com/
Enkelt struktur i menu
En simpel HTML struktur i WordPress menuen er desværre ikke så enkelt. På nuværende tidspunkt er jeg kommet frem til nedestående Walker som indsættes i functions.php
<?php
// Menu
class Clean_Walker_Nav extends Walker_Nav_Menu {
function filter_builtin_classes( $var ) {
return ( FALSE === strpos( $var, 'item' ) ) ? $var : '';
}
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n".$indent."<ul>\n";
}
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$unfiltered_classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes = array_filter( $unfiltered_classes, array( $this, 'filter_builtin_classes' ) );
if ( preg_grep("/^current/", $unfiltered_classes) ) {
$classes[] = 'active';
}
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '<li' . $value . $class_names .'>';
$atts = array();
$atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : '';
$atts['target'] = ! empty( $item->target ) ? $item->target : '';
$atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
$item_output = $args->before;
$item_output .= '<a'. $attributes .'>';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
?>
I filen menu.php printer jeg menuen ved nedestående kode:
<nav>
<?php
$defaults = array(
'container' => '',
'items_wrap' => '<ul class="main">'."\n".'%3$s</ul>',
'depth' => 1,
'walker' => new Clean_Walker_Nav
);
wp_nav_menu( $defaults );
?>
</nav>
En anden mulighed er at benytte add_filter, til at rydde op i html på menuen.
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array('current-menu-item')) : '';
}
Dato
<?php the_date('d. m Y', '<p class="dato">', '</p>'); ?>
<?php the_time('d. m Y', '<p class="dato">', '</p>'); ?>
NB!
I et loop med flere posts med samme dato. vil the_date
kun vise datoen ved den første post.
Her kan man så benytte the_time
for at være sikker på, at der vises en dato ved hver enkel post.
På forsiden eller IKKE på forsiden
<?php if( is_home() || is_front_page() ) : ?>
YOUR CODE HERE
<?php endif; ?>
Vises ikke på forsiden
<?php if( !is_home() || !is_front_page() ) : ?>
YOUR CODE HERE
<?php endif; ?>
... eller her samlet i en ...
<?php if (is_home() || is_front_page()) {?>
...
<?php } else { ?>
...
<?php } ?>
Automatisk opdatering af Wordpress og plugin
Indsæt følgende i filen wp-config.php
define( 'WP_AUTO_UPDATE_CORE', true );
Nu vil alle nye opdateringer til Wordpress core filer opdateres automatisk!
Hvis man ikke ønsker dev versioner kan man i sit Wordpress theme functions.php indsætte følgende:
add_filter( 'allow_dev_auto_core_updates', '__return_false' );
Automatisk opdatering af Wordpress plugin kan ligeledes udføres ved at indsætte nedenstående i functions.php
add_filter( 'auto_update_plugin', '__return_true' );
Her det samme for Themes
add_filter( 'auto_update_theme', '__return_true' );
URL til theme
Indsæt link til theme mappen. Hvis du eksempelvis skal indsætte et billede direkte i en theme fil.
<?php echo get_template_directory_uri(); ?>
Opdel theme i egne filer
Når tempaltet splittes op i custom filer kan de printes med
<?php get_template_part( 'filnavn' ); ?>
Fjern mulighed for at ændre i theme filer
Fjern mulighed for at ændre i theme filer fra WP kontrolpanel
Fjerne muligheden for at ændre i WP theme fra WordPress kontrolpanel. En mulighed for at gøre det lidt mere besværligt for ubudne gæster at ødelægge hjemmesiden.
Indsættes i wp-config.php
define('DISALLOW_FILE_EDIT', true );
Uddrag - the_excerpt
Vis Uddrag feltet
<?php the_excerpt(); ?>
Ovenstående printes i <p> ... </p>
Vil du have et helt rent output, kan det gøres med:
<?php echo get_the_excerpt(); ?>
Pagination ala Thesis
Her er benytte en Pagination fra Thesis
function wpbeginner_numeric_posts_nav() {
if( is_singular() )
return;
global $wp_query;
/** Stop execution if there's only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
/** Add current page to the array */
if ( $paged >= 1 )
$links[] = $paged;
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<ul class="pager__list">' . "\n";
/** Previous Post Link */
if ( get_previous_posts_link() )
printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) )
echo '<li>…</li>';
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) )
echo '<li>…</li>' . "\n";
$class = $paged == $max ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** Next Post Link */
if ( get_next_posts_link() )
printf( '<li class="last">%s</li>' . "\n", get_next_posts_link() );
echo '</ul>' . "\n";
}
Indsættes i de ønskede filer ved:
<?php wpbeginner_numeric_posts_nav(); ?>
Husk at indsætte 'paged' => $paged
i Loop
eks.
<?php $loop = new WP_Query( array( 'post_type' => 'post', 'paged' => $paged ) ); ?>
<ul class="post__list">
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<li>
<a href="<?php the_permalink() ?>">
<?php echo get_the_post_thumbnail($page->ID); ?>
<h2><?php the_title() ?></h2>
<?php the_excerpt() ?>
<p class="post__info">
<b>Dato</b>: <?php the_date('d. m Y'); ?><br />
<b>kommentarer</b>: <?php comments_number( '0', '1', '%' ); ?></p>
</a>
</li>
<?php endwhile; ?>
</ul>
<?php wpbeginner_numeric_posts_nav(); ?>
Lidt SASS
/* Pager list */
$pager-size: 31px;
ul.pager__list {
margin: 10px 0;
padding: 0;
li{
margin: 0 2px 0 0;
padding: 0;
list-style-type: none;
float: left;
&.active, &:hover {
a {
background-color: #e43b54;
color: #fff;
}
}
}
a {
text-decoration: none;
padding: 0 5px;
height: $pager-size;
min-width: $pager-size;
line-height: $pager-size;
text-align: center;
display: block;
border: 1px solid #F0EADD;
border-radius: 5px;
}
}
Læs mere her: http://codex.wordpress.org/Pagination
Wordpress Child Theme
Opret et Child Theme i Wordpress, en simpel og sikker metode til små ændringer til et eksisterende WordPress Theme.
/*
Theme Name: THEME NAVN
Theme URI: http://www.THEME-HJEMMESIDE.dk (hvis en sådan findes ... ellers link til din side)
Description: BESKRIVELSE
Author: (dig) FORFATTER
Author URI: http://www.DINSIDE.dk
Template: twentythirteen (wordpress theme der er udgangspunktet!)
Version: 0.1.0
*/
@import url("../twentythirteen/style.css");
NB!
Ofte skal du lige indsætte menuen i den rigtigeplacering igen. Har ofte været ud for, at den forsvinder, når man aktivere sit child theme.
Link til forsiden
Typisk vil du indsætte sidens logo i et link til forsiden. URL'en til forsiden printer du i en theme fil med:
<?php echo home_url(); ?>
the_post_thumbnail
<?php the_post_thumbnail(); ?>
Tilføj html elementer rundt om billedet.
Først tjekkes om billedet findes, derefter printes det med <div class="min__class">
omkring.
<?php if ( has_post_thumbnail() ) { ?>
<div class="min__class">
<?php the_post_thumbnail(); ?>
</div>
<?php } ?>
Print ALT som tekst
Der tjekkes først for om der findes en ALT tekst. Hvis ja, printes den i <span class="small">...</span>
<?php
$thumb_id = get_post_thumbnail_id(get_the_ID());
$alt = get_post_meta($thumb_id, '_wp_attachment_image_alt', true);
if(isset($alt) && $alt != null) {
echo '<span class="small">' . $alt . '</span>' ;
}
?>
Fjern Plugin CSS fil
Ønsker du at fjerne CSS filer fra et plugin, kan du gøre det med nedestående snippet.
Du skal finde kaldet til CSS filen i pluginfilen. Søg efter wp_enqueue_style.
Her har jeg fjernet CSS filen fra Cookie Notice - dFactory.
I filen cookie-notice.php søgte jeg efter wp_enqueue_style. Søgningen gav 3 resultater, de to første blev brugt til backend CSS. Den tredje med navnet "cookie-notice-front" er den jeg her har fjernet!
<?php
// Fjerner plugin CSS filer
add_action( 'wp_print_styles', 'fjern_plugin_css', 100 );
function fjern_plugin_css() {
wp_deregister_style( 'cookie-notice-front' );
// list flere her!
}
?>
Typisk ønsker man kun at have én CSS fil til sin hjemmeside, for at optimere sidens load hastighed!
Fjern attribute på billeder
Fjern width & height på billeder
Vigtigt når man arbejder med responsive webdesign.
<?php
add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 );
add_filter( 'wp_get_attachment_link', 'remove_width_attribute', 10 );
add_filter( 'the_content', 'remove_width_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 );
function remove_width_attribute( $html ) {
$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
return $html;
}
?>
Fjerne elementer fra HEAD
<?php
// Fjerne elementer fra WordPress head
function clean_head() {
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'rest_output_link_wp_head');
remove_action( 'wp_head', 'wp_oembed_add_discovery_links')
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
emove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
}
add_action( 'after_setup_theme', 'clean_head' );
?>
HTML tags i kommentarfelt
Vælg hvilke HTML tags du ikke ønsker at benytte i kommentarfeltet.
Indsættes i functions.php
<?php
function THEMENAVN_customise_allowedhtmlTags() {
global $allowedtags;
// remove unwanted tags
$unwanted = array(
'abbr',
'acronym',
'blockquote',
'cite',
'code',
'del',
'strike',
'i',
'b',
'q'
);
foreach ( $unwanted as $tag )
unset( $allowedtags[$tag] );
}
add_action('init', 'THEMENAVN_customise_allowedhtmlTags');
?>
Fjern emojis
function disable_wp_emojicons() {
// all actions related to emojis
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
// filter to remove TinyMCE emojis
add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' );
}
add_action( 'init', 'disable_wp_emojicons' );
function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
kilde: http://wordpress.stackexchange.com/questions/185577/disable-emojicons-in...
Forfatter
Print forfatters navn:
<?php the_author(); ?>
Print link til forfatters hjemmeside
<?php the_author_link(); ?>
Print link til forfatterens arkiv (viser alle indlæg .... ikke sider (page))
<?php the_author_posts_link(); ?>
the_title
<?php the_title('<h1>', '</h1>'); ?>
LOOP - antal og offset
Her vises de seneste 8 undtagen de 3 nyeste
<?php $loop = new WP_Query( array( 'posts_per_page' => 8, 'offset' => 3 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
.....
<?php endwhile; ?>
LOOP - bestemt kategori
Vis de 6 nyeste i kategori id = 2
<?php $loop = new WP_Query( array( 'posts_per_page' => 6, 'category__in' => array('2') ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
.....
<?php endwhile; ?>
Her et LOOP som IKKE viser indlæg fra kategori id = 2
<?php $loop = new WP_Query( array( 'category__not_in' => array( 2 ) ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
.....
<?php endwhile; ?>
LOOP - sticky post
Loop igennem alle sticky post
<?php $loop = new WP_Query( array( 'post__in' => get_option('sticky_posts') ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
.....
<?php endwhile; ?>
Eller fjern sticky post fra loop
<?php $loop = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
.....
<?php endwhile; ?>
LOOP - post_type
Her loopes i en liste (der tjekkes for om listen er tom!)
<?php $loop = new WP_Query( array( 'post_type' => 'INDSÆTE TYPE HER') ); ?>
<?php if ( $loop->have_posts() ) { ?>
<ul>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<li> ... </li>
<?php endwhile; wp_reset_query(); ?>
</ul>
<?php } ?>
Kan eksempvis være 'page'
eller din egen custom post type
LOOP - sortering (orderby & order)
<?php $loop = new WP_Query( array( 'orderby' => 'INDSÆT HVAD DU VIL SORTERE EFTER', 'order' => 'RÆKKEFØLGE', ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
...
<?php endwhile; ?>
'orderby'
- 'ID'
- 'author' - Forfatter
- 'title'
- 'name'
- 'type'
- 'date'
- 'modified'
- 'parent'
- 'rand' - Tilfældig rækkefølge
- 'comment_count'
- 'menu_order' - Følger menu rækkefølgen
'order'
- 'asc' - Stigende rækkefølge (1,2,3,4 ....)
- 'desc' - Faldende rækkefølge (10,9,8,7 .....)
Forfatter navn på author.php
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>
<h1><?php echo $curauth->nickname; ?></h1>
Menu i top & aside
Benyt TAGs til at vis/skjule elementer
Hvis den findes vises den ikke
<?php if (!has_tag('4')) { ?>
..... så vises jeg ikke ...
<?php } ?>
Her med flere tags
<?php if (!has_tag(array('56', '58', '60')) ) { ?>
..... så vises jeg ikke ...
<?php } ?>
Hvis den findes vises den
<?php if (has_tag('4')) { ?>
..... her kommer jeg frem! ...
<?php } ?>
Kategorier
Kan selvfølgelig ligledes benyttes ved kategorier.
Kan eksempelvis benyttes for at vise/skjule html i et loop.
<?php if (has_category(array('47', '58', '60')) ) { ?>
...
<?php } ?>
Her er indholdet vist, hvis siden er i kategori 47,58 eller 60
ACF pro - File på siden
Her er tilføjet feltet et Repeater Field filer med 2 sub felter download og kliktekst.
Et loop der printer filerne i en liste kan se ud som nedenstående:
NB!
Se specielt $url = wp_get_attachment_url( $download );
hvor vi er nød til, at benytte wp_get_attachment_url( ... )
for at få URL'en til filen.
<?php if( have_rows('filer') ): ?>
<h4>Downloads</h4>
<ul class="download__filer">
<?php while( have_rows('filer') ): the_row();
$download = get_sub_field('download');
$url = wp_get_attachment_url( $download );
$klik = get_sub_field('kliktekst');
?>
<li><a href="<?php echo $url; ?>" target="_blank"><?php echo $klik; ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
AFC pro - Billeder (galleri) på siden
Her er oprette et Gallery Field med navnet image_aside ... så kan du evt. sætte dem i aside ;-)
Et mindre billede linker til det originale billede. Her benyttes add_image_size
i functions.php til at angive en billedstørrelsen (formatet) aside-thumb
NB!
Jeg har sat linket til at åbne i Lightbox - derfor data-lightbox="image-gallery"
<?php
$images = get_field('images_aside');
if( $images ): ?>
<section>
<h4>Images</h4>
<ul class="aside__pic">
<?php foreach( $images as $image ): ?>
<li><a href="<?php echo $image['url']; ?>" data-lightbox="image-gallery"><img src="<?php echo $image['sizes']['aside-thumb']; ?>" alt="<?php echo $image['alt']; ?>" /></a></li>
<?php endforeach; ?>
</ul>
</section>
<?php endif; ?>
AFC pro - accordion
<?php if( have_rows('accordion') ): ?>
<div class="accordion">
<?php while( have_rows('accordion') ): the_row();
$overskrift = get_sub_field('acc_overskrift');
$body = get_sub_field('acc_body');
?>
<h3><?php echo $overskrift; ?></h3>
<div>
<?php echo $body; ?>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
Contact Form 7 - required *
jQuery snippet der tilføjer required *
$(".wpcf7-validates-as-required").parent().prepend("<span class='required'>*</span>");
Opret Category i functions.php
Det kan ikke altid betale sig at oprette nye Custom Post Type. Ofte kan inddeling i kategorier være mere enkelt og nemmer at vedligeholde.
I sådanne tilfælde er det oplagt, at oprette kategorierne direkte i WordPress themet. Hvis du looper igennem kategorier i dit theme, giver det god mening, at de også er prædefineret i samme!
function THEME-NAVN_insert_category() {
wp_insert_term(
'Case',
'category',
array(
'description' => 'Opret cases med den kategori',
'slug' => 'case'
)
);
wp_insert_term(
'News',
'category',
array(
'description' => 'Opret nyheder med den kategori',
'slug' => 'news'
)
);
}
add_action( 'after_setup_theme', 'THEME-NAVN_insert_category' );
category.php
Vis kategoriens navn og beskrivelse.
<h1><?php single_cat_title(''); ?></h1>
<?php echo category_description( $category_id ); ?>
Shortcode
Indsætte i functions.php filen i dit theme eller i plugin fil ,for at give mulighed for at skrive shortcodes direkte i en tekst widget.
add_filter('widget_text', 'do_shortcode');
Skriv shortcode direkte i theme filerne med:
<?php echo do_shortcode('[SHORTCODE]');?>
Gravatar (avatar)
Udskriv en bestemt gravatar (her min egen og med en størrelse på 50 x 50)
<?php echo get_avatar( 'morten@hjemmesider.dk', '50' ); ?>
Ny Post Type
Opret ny Post Type i Wordpress. Kan gøres direkte i temaets functions.php fil. Mere korrekt er nok at lave et lille plugin med samme funktion. På den måde kan man skifte tema, uden af den nye post type forsvinder.
Her er oprettet en post type til kontaktpersoner.
<?php
/* Nye post typer */
function create_posttype() {
register_post_type( 'person',
// CPT Options
array(
'labels' => array(
'name' => __( 'Personer' ),
'singular_name' => __( 'Person' )
),
'public' => true,
'taxonomies' => array('category'),
'supports' => array( 'title', 'editor', 'thumbnail'),
'rewrite' => array('slug' => 'contact-person'),
)
);
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );
?>
Tjek om der findes content
<?php
$content = get_the_content();
if(!empty($content)) { ?>
<div class="content">
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
</div>
<?php } ?>
Facebook & Twitter
Er du ude efter en simpel løsning på sociale delinger på Facebook og Twitter, som samtidig sikre en hurtig loadtid på din hjemmeside. Løsningen benytter ikke plugin og ekstra load tid til javascript.
<?php
<a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>" rel="nofollow" target="blank">Del på Facebook</a>
<a href="https://twitter.com/intent/tweet?original_referer=&text=<?php the_title(); ?>&url=<?php the_permalink();?>" rel="nofollow" target="blank">Tweet</a>
?>
PHP - hvis indhold
Man har ofte brug for at printe html elementer rundt om de forskellige elementer i WordPress.
For at undgå at tom html printes i kildekoden, når elementet ikke benyttes skal der tjekkes med PHP IF om det findes.
Tags - the_tags()
<?php $post_tags = wp_get_post_tags($post->ID); if(!empty($post_tags)) { ?>
<p class="tags"><?php the_tags() ?></p>
<?php } ?>
Post - er det en post, altså ikke en page etc.
Her tjekkes også for, om det er en custom post type med navnet news!
<?php if (is_singular(array( 'news', 'post' ))) { ?>
....
<?php } ?>
Tjek for page template
<?php if ( is_page_template( 'page-aside-right.php' ) ){ ?>
...
<?php } ?>
Tjek om ACF er aktiveret
<?php
if( class_exists('acf') ) {
.....
}
?>
Hjælp - Fejlfinding
Printer felter
<?php printf( '<pre>%s</pre>', var_export( get_post_custom( get_the_ID() ), true ) ); ?>
Slå DEBUG mode til i filen wp-config.php
Tjek om sidebar / widget benyttes
<?php if ( is_active_sidebar( 'Min_Sidebar' ) ) { ?>
<?php dynamic_sidebar( 'Min_Sidebar' ); ?>
<?php } ?>
Post image i body class
<body <?php body_class(); ?> <?php
if ( $thumbnail_id = get_post_thumbnail_id() ) {
if ( $image_src = wp_get_attachment_image_src( $thumbnail_id, 'normal-bg' ) )
printf( ' style="background-image: url(%s);"', $image_src[0] );
}
?> >
WooCommerce - her vises kun billede på selve produktsiden.
For at holde sidens load hastighed nede, bruges samme version af billedet, som benyttes til produktbilledet ( 'shop_single' )
<body <?php body_class(); ?> <?php
if (is_product() ) {
if ( $thumbnail_id = get_post_thumbnail_id() ) {
if ( $image_src = wp_get_attachment_image_src( $thumbnail_id, 'shop_single' ) )
printf( ' style="background-image: url(%s);"', $image_src[0] );
}
}
?> >
Ny posttype
Her kan du finde ikoner til admin menuen til din nye posttype - https://developer.wordpress.org/resource/dashicons/#editor-spellcheck
Tags
Vis liste med alle tags.
I functions.php skrives:
<?php
function showalltags() {
$tags = get_tags();
$html = "";
foreach ($tags as $tag){
$tag_link = get_tag_link($tag->term_id);
$html .= '<li><a href="' . $tag_link . '">';
$html .= "{$tag->name}</a></li>" . "\r\n";
}
echo $html;
}
?>
page.php eller anden template fil skrives
<ul class="taglist">
<?php showalltags(); ?>
</ul>
Custom post type med tags.
For at de vises på tags siderne skal der i functions.php tilføjes:
<?php
function wpbase_alltags_tags( $query ) {
if ( $query->is_tag() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'MIN-NYE-POST-TYPE' ) );
}
}
add_action( 'pre_get_posts', 'wpbase_alltags_tags' );
?>
Print side via ID
<?php
$page_id = 161; //Page ID
$page_data = get_page( $page_id );
//store page title and content in variables
$title = $page_data->post_title;
$content = apply_filters('the_content', $page_data->post_content);
//display the title and content
echo $title;
echo $content;
?>
Title attribute i menu link
Indsæt link title i din WordPress menu - her indsat i <em> ... </em>
<?php
add_filter('walker_nav_menu_start_el', 'description_in_nav_el', 10, 4);
function description_in_nav_el($item_output, $item, $depth, $args)
{
if ($item->attr_title) {
return preg_replace('/(<a.*?>[^<]*?)</', '$1' . "<em>{$item->attr_title}</em><", $item_output);
}
else {
return preg_replace('/(<a.*?>[^<]*?)</', '$1' . "<", $item_output);
}
}
?>
Sprog i theme filerne
Her en måde hvor man kan tjekke om det er engelsk eller kinesisk sprogversion
<?php
$curlang = get_bloginfo('language');
if($curlang == "en-US") { ?>
<h3>Her kommer USA...</h3>
<?php }elseif($curlang == "zh-CN") { ?>
<h3>Her kommer KINA ...</h3>
<?php } ?>
Metabox
Printer indhold af metaboks = XXX
<?php $theme_var_meta = get_post_meta( get_the_ID(), 'XXX', true ); if ( ! empty( $theme_var_meta ) ) { echo '<div style="meta-box">' . $theme_var_meta . '</div>';} ?>
Widget - custom
God info her:
- http://www.wpexplorer.com/create-widget-plugin-wordpress/
- http://www.wpexplorer.com/how-to-create-a-widget-plugin-for-wordpress-pa...
http -> https
Nedenstående virker på Unoeuro
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
På Wannafind Open Source har jeg benytte:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^123\.XXXX\.dk$ [NC]
RewriteRule ^ https://www.XXXX.dk [L,R]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Fjern trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
ACF antal sub fields
Antal af sub felter er eksempelvis gode at have for at lave class omkring felterne
Her ere repeater feltet = "spalter"
if( have_rows('spalter') ):
$my_fields = get_field_object('spalter');
$count = (count($my_fields['value']));
endif;
print en class
echo '<div class="spalte-nr-' . $count . '">';
Loop relateret kategori
$related = get_posts(
array(
'category__in' => wp_get_post_categories( $post->ID ),
'numberposts' => 5,
'post__not_in' => array( $post->ID )
)
);
if( $related ) {
foreach( $related as $post ) {
setup_postdata($post);
/*whatever you want to output*/
}
wp_reset_postdata();
}
.... eller
$related = new WP_Query(
array(
'category__in' => wp_get_post_categories( $post->ID ),
'posts_per_page' => 5,
'post__not_in' => array( $post->ID )
)
);
if( $related->have_posts() ) {
while( $related->have_posts() ) {
$related->the_post();
/*whatever you want to output*/
}
wp_reset_postdata();
}
custom_taxonomy()
<?php
// Register Custom Taxonomy
function xx_custom_taxonomy() {
$labels = array(
'name' => _x( 'Lande / områder', 'Taxonomy General Name', 'text-domain' ),
'singular_name' => _x( 'Land / område', 'Taxonomy Singular Name', 'text-domain' ),
'menu_name' => __( 'Lande', 'text-domain' ),
'all_items' => __( 'Alle lande / områder', 'text-domain' ),
'parent_item' => __( 'Parent Item', 'text-domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text-domain' ),
'new_item_name' => __( 'New Item Name', 'text-domain' ),
'add_new_item' => __( 'Tiføj nyt land / område', 'text-domain' ),
'edit_item' => __( 'Ret land / område', 'text-domain' ),
'update_item' => __( 'Update land / område', 'text-domain' ),
'view_item' => __( 'Se land / område', 'text-domain' ),
'separate_items_with_commas' => __( 'Separate items with commas', 'text-domain' ),
'add_or_remove_items' => __( 'Add or remove items', 'text-domain' ),
'choose_from_most_used' => __( 'Choose from the most used', 'text-domain' ),
'popular_items' => __( 'Popular Items', 'text-domain' ),
'search_items' => __( 'Søg land / område', 'text-domain' ),
'not_found' => __( 'Not Found', 'text-domain' ),
'no_terms' => __( 'No items', 'text-domain' ),
'items_list' => __( 'Items list', 'text-domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text-domain' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
"query_var" => true,
"show_in_menu" => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'rewrite' => array(
'slug' => 'place',
'with_front' => false,
'hierarchical' => true,
),
);
register_taxonomy( 'land', array( 'dealer' ), $args );
}
add_action( 'init', 'xx_custom_taxonomy', 2 );
?>