Wordpress: changing only one page url from database - php

In Wordpress I created a page "home" (https://sitedomain.com/home) but I cannot render it equal as the homepage (I made a page template equal to index.php and implemented the custom query but still not working properly).
I currently have a
echo("<script> window.location.replace('https://sitedomain.com')</script>"); statement in the single page template file allowing me to redirect users to the actual homepage but it is slow. I want to manually change the URL of this page in the database but I cannot find it in the Database.
Also, it is not possible to modify the URL from the dashboard since the minimum url must be https://sitedomain.com/home.
Is it possible? Where to find the single URL of the page in the Database?

You can just define that page as your homepage in the WP dashboard: "Settings > Read > select static page as starting page" (or similar, not sure about the exact English terms)

in the end I simply used JQuery to replace the href attribute with the one that I needed (https://sitedomain.com).
Not ideal solution but it works.

Related

Wordpress Permalink Issue Remove Auto Added Code

I have a Website of Wordpress In My Website When I click on any URL After complete Loading Content Page Some Codes Automatically Add on Permalink
For Example
http://example.com/wow-amazing/ Correct Link This Link Is Fine
After Complete Page Loading
http://example.com/wow-amazing/#.WfB5iI-Czcs
How Can I Remove #.WfB5iI-Czcs this Automatically Added Code From Permalink
Thanks In Advance
That part with # is generated at front side, so it actually doesn't affect you permalink. So there is no problem if you see that.
And actually it doesn't come from permalink, it is generated by some plugin's javascript. (for example AddThis generates such anchors, if you use AddThis, then the reason is AddThis)

Wordpress: How to build a link with php-function call?

I want to add a logout link to my wordpress page.
Logout
The link is visible on the page but when i click it it redirects me to
https://www.mywebsite.de/%3C?php%20echo%20wp_logout_url(%27https://www.mywebsite.de/%27)%20?%3E
which of course result in a 404. Obviously the php code is not executed. What am i doing wrong? How can i build the link dynamically?
EDIT:
I want to place this link via wordpress dashboard to the navigation menu (Appearance -> Menus -> Costum Links). For a first try i just added the link to my front page (Pages -> All Pages -> Choose Front Page --> added link in editor to page content).
In booth cases the php code is not executed but added to the link which results of course in a broken link (404).
The control characters like "<" get substituded. The whitespaces too. Maybe it is a character encoding problem?
Logout
https://developer.wordpress.org/reference/functions/wp_logout_url/
The problem was that is not possible to execute php code in wordpress editor (which is a good thing due to security reasons).
So i found another way: I created a shortcode for generating my dynamic link/url. With the plugin 'Shortcodes in Menus' everything works just fine.

PHP link navigation inside link navigation

I created a simple webshop with PHP. The header, footer and navigation is fixed and when I click through the navigation only the main area changes and the link changes too (for exaple index.php?page=shop).
Now I want to use pagination for the articles. Every time I click on another page it will change the link too (for example index.php?page=shop?id=5). The id is the page number. But this doesn't work in PHP. It always links me to the start page.
Does anybody know how to do this?
There are only one single question mark in URL in place of two when u pass more than two parameters in URL it should be
index.php?page=shop&id=5
Like arkascha said , index.php?page=shop&id=5 then you get this parameter with $_GET['id'] , check if isset and load next pag.

Menu not working with on page anchors and out of page anchors

Not really sure how to phrase my question but here's my issue:
I have a php template type site where the main navigation is in it's own file. Some of the navigation buttons point to anchors on the main page and some go to other pages completely.
My original menu used links like index.php# for the on page anchors and index.php?page= for the off page links. I had two issues with this:
1. When I selected an on page link the page seemed to refresh and it was slow taking me to the place on the page the link was connected to.
2. I'm using htaccess to redirect my url from mydomaincom/index.php to mydomaincom/ and found that my nav didn't work in Safari since my href addresses where index.php#value and Safari v5 wouldn't carry over the anchor links.
Rather than turn off my redirect I just changed the urls to point to mydomaincom/#value. Not only did this work great for all browsers but it also made my page quicker.
Now however when I'm on one of the other pages say index.php?page=photos and I use the nav it just tries to find the anchors on that page (which makes sense but obviously not what I want).
What it's doing now:
mydomaincom/index.php?page=photos#
What I need it to do:
mydomaincom/#
Since the same nav file is used for all pages do I need to create a nave link variable so that when the nav is on a non-index.php page the link urls that hook to the index.php on page anchors uses the full url?
Hopefully this makes sense. Any suggestions? Also trying to keep this search engine/Google friendly :)
Thanks!
While I could have hard coded it I instead created a php variable called $index which I set in the initial settings file loaded first. I set the variable to mydomaincom/# and then updated the nav button links which are onpage anchors to . I didn't need to make it a variable but it means I could change it easier in the future if I need too.
All my nav links that point to anchors on the index.php page are formatted like mydomaincom/# and off page links mydomaincom/page?=. Made sure this worked when using the menu on the index.php page and off pages as well as checked speed and functionality in all browsers.
Thanks!

Create WordPress Page that redirects to another URL

I wanted to create a new WordPress page that is actually a link to another site. The goal is to have the page show up in a list of my pages, but actually send the web user to the target URL.
For example, say I want to include a page that indicates "My Photos" but actually redirects them to Flickr.
I'm guessing one way to accomplish this is by using a custom template page with a redirect instruction in PHP, but unfortunately I am a newbie to PHP and am not familiar with the way to accomplish this...
You can accomplish this two ways, both of which need to be done through editing your template files.
The first one is just to add an html link to your navigation where ever you want it to show up.
The second (and my guess, the one you're looking for) is to create a new page template, which isn't too difficult if you have the ability to create a new .php file in your theme/template directory. Something like the below code should do:
<?php /*
Template Name: Page Redirect
*/
header('Location: http://www.nameofnewsite.com');
exit();
?>
Where the template name is whatever you want to set it too and the url in the header function is the new url you want to direct a user to. After you modify the above code to meet your needs, save it in a php file in your active theme folder to the template name. So, if you leave the name of your template "Page Redirect" name the php file page-redirect.php.
After that's been saved, log into your WordPress backend, and create a new page. You can add a title and content to the body if you'd like, but the important thing to note is that on the right hand side, there should be a drop down option for you to choose which page template to use, with default showing first. In that drop down list, there should be the name of the new template file to use. Select the new template, publish the page, and you should be golden.
Also, you can do this dynamically as well by using the Custom Fields section below the body editor. If you're interested, let me know and I can paste the code for that guy in a new response.
I've found that these problems are often best solved at the server layer. Do you have access to an .htaccess file where you could place a redirect rule? If so:
RedirectPermanent /path/to/page http://uri.com
This redirect will also serve a "301 Moved Permanently" response to indicate that the Flickr page (for example) is the permanent URI for the old page.
If this is not possible, you can create a custom page template for each page in question, and add the following PHP code to the top of the page template (actually, this is all you need in the template:
header('Location: http://uri.com, true, 301');
More information about PHP headers.
Alternately, use a filter.
Create an empty page in your WordPress blog, named appropriately to what you need it to be. Take note of the post_id. Then create a filter that alters its permalink.
add_filter('get_the_permalink','my_permalink_redirect');
function my_permalink_redirect($permalink) {
global $post;
if ($post->ID == your_post_id_here) {
$permalink = 'http://new-url.com/pagename';
}
return $permalink;
}
This way the url will show up correctly in the page no funny redirects are required.
If you need to do this a lot, then think about using the custom postmeta fields to define a postmeta value for "offsite_url" or something like that, then you can create pages as needed, enter the "offsite_url" value and then use a filter like the one above to instead of checking the post_id you check to see if it has the postmeta required and alter the permalink as needed.
I'm not familiar with Wordpress templates, but I'm assuming that headers are sent to the browser by WP before your template is even loaded. Because of that, the common redirection method of:
header("Location: new_url");
won't work. Unless there's a way to force sending headers through a template before WP does anything, you'll need to use some Javascript like so:
<script language="javascript" type="text/javascript">
document.location = "new_url";
</script>
Put that in the section and it'll be run when the page loads. This method won't be instant, and it also won't work for people with Javascript disabled.
Use the "raw" plugin https://wordpress.org/plugins/raw-html/
Then it's as simple as:
[raw]
<script>
window.location = "http://www.site.com/new_location";
</script>
[/raw]
There are 3 ways of doing this:
By changing your 404.php code.
By using wordpress plugins.
By editing your .htaccess file.
Complete tutorial given at http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/
I found a plugin that helped me do this within seconds without editing code:
https://wordpress.org/plugins/quick-pagepost-redirect-plugin/
I found it here: http://premium.wpmudev.org/blog/wordpress-link-title-external-url/
There is a much simpler way in wordpress to create a redirection by using wordpress plugins. So here i found a better way through the plugin Redirection and also you can find other as well on this site Create Url redirect in wordpress through Plugin
(This is for posts, not pages - the principle is same. The permalink hook is different by exact use case)
I just had the same issue and created a more convenient way to do that - where you don't have to re-edit your functions.php all the time, or fiddle around with your server settings on each addition (I do not like both).
TLTR
You can add a filter on the actual WP permalink function you need (for me it was post_link, because I needed that page alias in an archive/category list), and dynamically read the referenced ID from the alias post itself.
This is ok, because the post is an alias, so you won't need the content anyways.
First step is to open the alias post and put the ID of the referenced post as content
(and nothing else):
Next, open your functions.php and add:
function prefix_filter_post_permalink($url, $post) {
// if the content of the post to get the permalink for is just a number...
if (is_numeric($post->post_content)) {
// instead, return the permalink for the post that has this ID
return get_the_permalink((int)$post->post_content);
}
return $url;
}
add_filter('post_link', 'prefix_filter_post_permalink', 10, 2 );
That's it
Now, each time you need to create an alias post, just put the ID of the referenced post as the content, and you're done.
This will just change the permalink. Title, excerpt and so on will be shown as-is, which is usually desired. More tweaking to your needs is on you, also, the "is it a number" part in the PHP code is far from ideal, but like this for making the point readable.

Categories