petUrl( $templateType, 'google', $wpObject );
$editFacebookSnippetUrl = $this->getEditSnippetUrl( $templateType, 'facebook', $wpObject );
$editTwitterSnippetUrl = $this->getEditSnippetUrl( $templateType, 'twitter', $wpObject );
}
} elseif (
'archive' === $templateType ||
'author' === $templateType ||
'date' === $templateType ||
'search' === $templateType
) {
if ( is_a( $queriedObject, 'WP_User' ) ) {
$editObjectUrl = get_edit_user_link( $queriedObject->ID );
$editObjectBtnText = esc_html__( 'Edit User', 'all-in-one-seo-pack' );
}
$editGoogleSnippetUrl = $this->getEditSnippetUrl( $templateType, 'google' );
} elseif ( 'dynamic_home' === $templateType ) {
$editGoogleSnippetUrl = $this->getEditSnippetUrl( $templateType, 'google' );
$editFacebookSnippetUrl = $this->getEditSnippetUrl( $templateType, 'facebook' );
$editTwitterSnippetUrl = $this->getEditSnippetUrl( $templateType, 'twitter' );
}
return [
'editGoogleSnippetUrl' => isset( $editGoogleSnippetUrl ) ? $editGoogleSnippetUrl : '',
'editFacebookSnippetUrl' => isset( $editFacebookSnippetUrl ) ? $editFacebookSnippetUrl : '',
'editTwitterSnippetUrl' => isset( $editTwitterSnippetUrl ) ? $editTwitterSnippetUrl : '',
'editObjectBtnText' => isset( $editObjectBtnText ) ? $editObjectBtnText : '',
'editObjectUrl' => isset( $editObjectUrl ) ? $editObjectUrl : '',
'keyphrases' => isset( $keyphrases ) ? $keyphrases : '',
'page_analysis' => isset( $pageAnalysis ) ? $pageAnalysis : '',
'urls' => [
'home' => home_url(),
'domain' => aioseo()->helpers->getSiteDomain(),
'mainSiteUrl' => aioseo()->helpers->getSiteUrl(),
],
'mainAssetCssQueue' => aioseo()->core->assets->getJsAssetCssQueue( $this->mainAssetRelativeFilename ),
'data' => [
'isDev' => aioseo()->helpers->isDev()
]
];
}
/**
* Get the URL to the place where the snippet details can be edited.
*
* @since 4.2.8
*
* @param string $templateType The WP template type {@see WpContext::getTemplateType}.
* @param string $snippet 'google', 'facebook' or 'twitter'.
* @param \WP_Post|\WP_Term|null $object Post or term object.
* @return string The URL. Returns an empty string if nothing matches.
*/
private function getEditSnippetUrl( $templateType, $snippet, $object = null ) {
$url = '';
// Bail if `$snippet` doesn't fit requirements.
if ( ! in_array( $snippet, [ 'google', 'facebook', 'twitter' ], true ) ) {
return $url;
}
// If we're in a post/page/term (not an attachment) we'll have a URL directly to the meta box.
if ( in_array( $templateType, [ 'single', 'page', 'attachment', 'taxonomy' ], true ) ) {
$url = 'taxonomy' === $templateType
? get_edit_term_link( $object, $object->taxonomy ) . '#aioseo-term-settings-field'
: get_edit_post_link( $object, 'url' ) . '#aioseo-settings';
$queryArgs = [ 'aioseo-tab' => 'general' ];
if ( in_array( $snippet, [ 'facebook', 'twitter' ], true ) ) {
$queryArgs = [
'aioseo-tab' => 'social',
'social-tab' => $snippet
];
}
return add_query_arg( $queryArgs, $url );
}
// If we're in any sort of archive let's point to the global archive editing.
if ( in_array( $templateType, [ 'archive', 'author', 'date', 'search' ], true ) ) {
return admin_url( 'admin.php?page=aioseo-search-appearance' ) . '#/archives';
}
// If homepage is set to show the latest posts let's point to the global home page editing.
if ( 'dynamic_home' === $templateType ) {
// Default `$url` for 'google' snippet.
$url = add_query_arg(
[ 'aioseo-scroll' => 'home-page-settings' ],
admin_url( 'admin.php?page=aioseo-search-appearance' ) . '#/global-settings'
);
if ( in_array( $snippet, [ 'facebook', 'twitter' ], true ) ) {
$url = admin_url( 'admin.php?page=aioseo-social-networks' ) . '#/' . $snippet;
}
return $url;
}
return $url;
}
/**
* Returns the "SEO Preview" submenu item data ("node" as WP calls it).
*
* @since 4.2.8
*
* @return array The admin bar menu item data or an empty array if this feature is disabled.
*/
public function getAdminBarMenuItemNode() {
if ( ! $this->enable ) {
return [];
}
$title = esc_html__( 'SEO Preview', 'all-in-one-seo-pack' );
// @TODO Remove 'NEW' after a couple months.
$title .= '';
return [
'id' => 'aioseo-seo-preview',
'parent' => 'aioseo-main',
'title' => $title,
'href' => '#',
];
}
}