';
return $html;
}
/**
* Returns a navigation link variation
*
* @since 5.9.0
*
* @param WP_Taxonomy|WP_Post_Type $entity post type or taxonomy entity.
* @param string $kind string of value 'taxonomy' or 'post-type'.
*
* @return array
*/
function build_variation_for_navigation_link( $entity, $kind ) {
$title = '';
$description = '';
if ( property_exists( $entity->labels, 'item_link' ) ) {
$title = $entity->labels->item_link;
}
if ( property_exists( $entity->labels, 'item_link_description' ) ) {
$description = $entity->labels->item_link_description;
}
$variation = array(
'name' => $entity->name,
'title' => $title,
'description' => $description,
'attributes' => array(
'type' => $entity->name,
'kind' => $kind,
),
);
// Tweak some value for the variations.
$variation_overrides = array(
'post_tag' => array(
'name' => 'tag',
'attributes' => array(
'type' => 'tag',
'kind' => $kind,
),
),
'post_format' => array(
// The item_link and item_link_description for post formats is the
// same as for tags, so need to be overridden.
'title' => __( 'Post Format Link' ),
'description' => __( 'A link to a post format' ),
'attributes' => array(
'type' => 'post_format',
'kind' => $kind,
),
),
);
if ( array_key_exists( $entity->name, $variation_overrides ) ) {
$variation = array_merge(
$variation,
$variation_overrides[ $entity->name ]
);
}
return $variation;
}
/**
* Filters the registered variations for a block type.
* Returns the dynamically built variations for all post-types and taxonomies.
*
* @since 6.5.0
*
* @param array $variations Array of registered variations for a block type.
* @param WP_Block_Type $block_type The full block type object.
*/
function block_core_navigation_link_filter_variations( $variations, $block_type ) {
if ( 'core/navigation-link' !== $block_type->name ) {
return $variations;
}
$generated_variations = block_core_navigation_link_build_variations();
return array_merge( $variations, $generated_variations );
}
/**
* Returns an array of variations for the navigation link block.
*
* @since 6.5.0
*
* @return array
*/
function block_core_navigation_link_build_variations() {
$post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' );
$taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'objects' );
/*
* Use two separate arrays as a way to order the variations in the UI.
* Known variations (like Post Link and Page Link) are added to the
* `built_ins` array. Variations for custom post types and taxonomies are
* added to the `variations` array and will always appear after `built-ins.
*/
$built_ins = array();
$variations = array();
if ( $post_types ) {
foreach ( $post_types as $post_type ) {
$variation = build_variation_for_navigation_link( $post_type, 'post-type' );
if ( $post_type->_builtin ) {
$built_ins[] = $variation;
} else {
$variations[] = $variation;
}
}
}
if ( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
$variation = build_variation_for_navigation_link( $taxonomy, 'taxonomy' );
if ( $taxonomy->_builtin ) {
$built_ins[] = $variation;
} else {
$variations[] = $variation;
}
}
}
return array_merge( $built_ins, $variations );
}
/**
* Registers the navigation link block.
*
* @since 5.9.0
*
* @uses render_block_core_navigation_link()
* @throws WP_Error An WP_Error exception parsing the block definition.
*/
function register_block_core_navigation_link() {
register_block_type_from_metadata(
__DIR__ . '/navigation-link',
array(
'render_callback' => 'render_block_core_navigation_link',
)
);
}
add_action( 'init', 'register_block_core_navigation_link' );
/**
* Creates all variations for post types / taxonomies dynamically (= each time when variations are requested).
* Do not use variation_callback, to also account for unregistering post types/taxonomies later on.
*/
add_action( 'get_block_type_variations', 'block_core_navigation_link_filter_variations', 10, 2 );
Atlas Advokater - Red Capes
Atlas Advokater är en advokatbyrå som riktar sig till både privatpersoner och företag, med huvudkontor i Stockholm.
Vi har hjälpt Atlas Advokater med deras hemsida, att skapa SEO-anpassat innehåll, webbanalyser och SEM (marknadsföring på Google).
Brief (mål/syfte)
Inledningsvis hade vi kontakt med Atlas Advokater om en ny hemsida. Vi byggde hemsidan och sen dess har vårt samarbete fortsatt. Vi arbetar aktivt med att förbättra Atlas Advokaters webb och digitala närvaro genom:
Att göra analyser av hemsidans prestation under föregående månad
För att synas över sina konkurrenter på Google har vi rådgivit och hjälpt Atlas Advokater att arbeta med sin blogg. Bloggen är tänkt att fånga upp viktiga, och relevanta, frågor som potentiella kunder söker efter när de är i behov av en advokat. Men för att kunna rankas högt på Google räcker det inte med bra innehåll – sidan behöver också vara snabb.
Därför har vi arbetat med hastighetsoptimering av Atlas Advokaters hemsida. Det innebär arbete på alla delar av hemsidan: från bildformaten som används, till koden och vilket webbhotell som används. För att göra hemsidan snabb:
Byte vi Atlas Advokater till vårt webbhotell som backas upp av AWS.
Såg vi till att hemsidan cachas (sparas) på servern.
Komprimerade vi JavaScript och CSS för att minska filstorleken.
Komprimerade vi bilder för att minska filstorleken.
Resultat
Resultatet blev en hemsida som kunden är nöjd med, och som kontinuerligt förbättrats med tiden. Vi har ett gott samarbete där Atlas Advokater begär förändringar och vi snabbt kan ta fram en lösning.
Vi har sett en tillväxt av antalet besökare genom både sökmarknadsföring och direkt trafik. Marknadsföringen har gett god effekt i att driva trafik och att leda till konverteringar.